对不起,我对线程的了解还是有点弱。
只是随便看看。如果您使用TaskCompletionSource来表示某些IO异步操作。
就像一些DownloadAsync,据我所知,你不是在绑一条线?
我一直在想,当某些事情异步发生时,它一定是在绑住一个线程?
任何澄清都是非常感谢的。
谢谢
发布于 2012-10-10 00:30:21
webclient的DownloadFileAsync为在基于事件的异步模型中应用第三方逻辑提供了一个很好的机会。由于包含对DownloadFileAsync的调用的操作很快就完成了,因此直到触发DownloadFileCompleted事件,才能完成真正的工作。这就是TaskCompletionSource发挥作用的地方。
var downloadCompletionSource = new TaskCompletionSource<bool>();
webClient.DownloadFileCompleted+=
(s, e) =>
{
if (e.Error != null)
{
downloadCompletionSource.SetException(e.Error);
}
else
{
downloadCompletionSource.SetResult(true);
}
}
};
webClient.DownloadFileAsync(new Uri(downloadUrl), destinationFilePath);
try
{
downloadCompletionSource.Task.Wait();
}
catch (AggregateException e)
{
}有关更多信息,请单击此处in MSDN
https://stackoverflow.com/questions/9918716
复制相似问题