c# – Task.Wait方法(CancellationToken)

有人可以向我解释一下Task.Wait(CancellationToken)重载的用法吗? MSDN确实说了很多……

这就是我通常处理任务取消的方式:

var source = new CancellationTokenSource();
        var task = Task.Factory.StartNew(() => 
        {
            while (true)
            {
                source.Token.ThrowIfCancellationRequested();
            }
        },source.Token);

        try
        {
            task.Wait();
        }
        catch (AggregateException exc)
        {
            exc.Flatten().Handle(e => e is OperationCanceledException);
        }

那么什么时候将令牌传递给Wait方法有用呢?

解决方法

考虑你想要取消等待任务的情况,而不是实际取消任务本身…因为任务本身不处理取消,或者因为你真的想继续执行任务,但是(比如说)回应用户“这需要一段时间……但它仍在进行中.关闭浏览器是安全的.” (管他呢.)

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...