首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表示异步的TaskCompletionSource

表示异步的TaskCompletionSource
EN

Stack Overflow用户
提问于 2012-03-29 11:31:40
回答 1查看 509关注 0票数 1

对不起,我对线程的了解还是有点弱。

只是随便看看。如果您使用TaskCompletionSource来表示某些IO异步操作。

就像一些DownloadAsync,据我所知,你不是在绑一条线?

我一直在想,当某些事情异步发生时,它一定是在绑住一个线程?

任何澄清都是非常感谢的。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-10-10 00:30:21

webclient的DownloadFileAsync为在基于事件的异步模型中应用第三方逻辑提供了一个很好的机会。由于包含对DownloadFileAsync的调用的操作很快就完成了,因此直到触发DownloadFileCompleted事件,才能完成真正的工作。这就是TaskCompletionSource发挥作用的地方。

代码语言:javascript
复制
   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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9918716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档