【发布时间】:2012-03-10 16:08:56
【问题描述】:
我有以下代码
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() 不应该阻止他。
我需要的是创建一个同步方法而不是异步。
谢谢!
UPD:使用异步调用更新源代码。
【问题讨论】:
-
您的
downloadHandle.WaitOne代码是从哪个线程调用的? UI 线程?
标签: multithreading silverlight windows-phone-7 webclient manualresetevent