我有以下代码ManualResetEvent.WaitOne块的所有线程
ThreadPool.QueueUserWorkItem(new WaitCallback(DownloadAsync), apiMethod);
downloadHandle.WaitOne();
哪里DownloadAsync是
private void DownloadAsync(object _uri)
{
var url = _uri as string;
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.DownloadStringAsync(new Uri(GLOBALS.MAIN_API_URL + url, UriKind.Absolute));
}
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
result = e.Result;
downloadHandle.Set();
}
所以我的问题是,downloadHandle.Set()将永远不会被调用。但我不明白为什么?我为DownloadAsync创建一个新线程,downloadHandle.WaitOne()不应该阻止他。
我需要的是创建一个Sync方法,而不是Async。
谢谢!
UPD:使用异步调用更新源代码。
从哪个线程调用您的'downloadHandle.WaitOne'代码? UI线程? – 2012-02-20 10:58:14