可以从C#中的Thread使用ThreadPool吗?

时间:2011-03-30 17:41:07

标签: c# multithreading threadpool

我正在开发一个小应用程序,它将使用线程来发出一些Web请求。我希望当按下X按钮时,主Thread启动并管理ThreadPool,因为根据第一组线程的结果,我将不得不打开更多或更少的线程。

这是一个很好的做法还是有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

ThreadPool当然可以在C#中的任何线程中使用。

假设当您点击用户界面中的按钮时,它会调用:

object state = ...some value...;
ThreadPool.QueueUserWorkItem(MyHandler, state);

...

private void MyHandler(object state)
{
    object newState = ... do something with state ...
    ThreadPool.QueueUserWorkItem(HandleMoreWorkToDo, newState);
}

您只需要小心处理程序中使用的资源,这样就不会修改在另一个线程上操作的对象的状态。

答案 1 :(得分:0)

如果我理解你,你想要启动一个线程,然后允许它使用线程池来创建额外的线程。如果这是正确的假设,您可以轻松地做到这一点。

如果您正在谈论自己管理线程,那么这是一种选择。尝试从您自己的代码中真正管理线程池,这是令人讨厌的,并且建议尝试控制GC。

线程池应该为您提供更多或更少的线程。