我试图了解 ThreadPool.QueueWorkItem 方法的工作原理。但无法理解它是如何工作的。
我创建了一个简单的示例来测试 ThreadPool,当我运行此代码时,它会快速循环并停在 Thread.Sleep() 行。那么 ThreadPool 在这里做了什么。它是否将 10000 个方法存储在内部集合中,然后异步执行它们。(根据内部的一些计算,线程数可以是任何东西=>这就是我所知道的)
- 如果有一个队列(应该是),我可以获得队列中等待的项目(方法)的计数吗?
2.在示例中,WriteLine 方法很简单,但在我的实际应用中,我正在循环超过 50000 个项目并为数组中的每个项目调用 Web 服务方法、数据库选择/插入/更新 vb..。有可能做这样的事情吗?
class Program
{
static void Main(string[] args)
{
new Program().Looper();
}
public void Looper()
{
for (int i = 0; i < 10000; i++)
{
ThreadPool.QueueUserWorkItem(WriteLine, i);
}
Thread.Sleep(10000);
}
public void WriteLine(object str)
{
Debug.WriteLine((int)str);
}
}