如果我设置ThreadPool.SetMaxThreads
在WinForms应用程序做此设置只适用于工作项目或整个组装线如计时器和GUI更新?
我建立这将连续处理半短的操作,通常每1分钟左右的应用程序。 我第一次来到了,工作正常手动线程建立版本。 因为我创造了每一个操作一个新的线程我期待,如果我能创造一个更快,更有效的版本,我和线程池,没有工作更好它甚至挡住了我的计时器和GUI更新实验。 这是正常的还是我用错了?
这里是我的pseude代码:
手册主题版本:(所有MaxThread
和ThreadCount
读取和写入与锁完成)
timer1.Tick += Tick();
private void Tick()
{
//do some text logging
//do some TextBox updating
}
int MaxThreads = 10
while(true)
{
if(ThreadCount < MaxThreads)
{
new Thread(() => Process()).Start();
ThreadCount++;
}
else
{
Thread.Sleep(10000);
}
}
private void Process()
{
//do something
ThreadCount--;
}
线程池版本:(电脑是双核Xeon处理器在32位Windows服务器操作系统)
timer1.Tick += Tick();
private void Tick()
{
//do some text logging
//do some TextBox updating
}
ThreadPool.SetMaxThreads(10,10) **<--removing this didn't help with freezing at all**
while(true)
{
if(ThreadPool.GetAvailableThreads() > 0)
{
ThreadPool.QueueWorkItem(Process, null)
}
else
{
Thread.Sleep(10000);
}
}
private void Process()
{
//do something
}