我有一个 MonoTouch 应用程序,它使用线程池来管理后台线程的数量。如果我让 ThreadPool 产生一个线程并在该线程内,它会触发一个异步 Web 请求,那么该 Web 请求是否会产生第二个线程?如果是这样,该线程是否会从线程池中移除?
这种事情的最佳实践是什么? Web 请求是否应该只是一个同步调用,以降低当前线程数?
ThreadPool.QueueUserWorkItem(callback =>
{
WebClient client = new WebClient();
client.DownloadStringAsync(new Uri("http://www.google.com/"));
client.DownloadStringCompleted += (a,b) => Console.WriteLine("Done");
});
最佳答案
如果您之后立即结束线程池回调,就像您在那里展示的那样,应该没有问题。您只是将一个线程池调用时间轴替换为另一个。
关于c# - ThreadPool.QueueUserWorkItem 与线程内的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939110/