private static void Main(string[] args)
{
var locker = new object();
var bag = new ConcurrentBag<string>();
var list = new List<Task>();
for (var i = 0; i < 5000; i++)
{
var task = Task.Run(() =>
{
lock (locker)
{
using (var client = new WebClient())
{
Console.WriteLine("get");
var s = client.DownloadString("http://www.google.de");
bag.Add(s);
Console.WriteLine("got");
}
}
});
list.Add(task);
}
Task.WaitAll(list.ToArray());
}
似乎第一个请求阻止并且永远不会返回。 由于引入了锁,一次只发送一个请求。 所以没有发送任何parellel请求。
有人知道如何避免这种情况吗? 线程在此处阻止:CallStack