我正在开发一个小应用程序,它将使用线程来发出一些Web请求。我希望当按下X按钮时,主Thread启动并管理ThreadPool,因为根据第一组线程的结果,我将不得不打开更多或更少的线程。
这是一个很好的做法还是有更好的方法呢?
答案 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。
线程池应该为您提供更多或更少的线程。