问题遇到的现象和发生背景
Task.FromCanceled 它因指定的取消标记进行的取消操作而完成。
而且建议是和await一起用,我没弄懂它的作用是什么,用法是什么?
用代码块功能插入代码,请勿粘贴截图
static void Main(string[] args) {
DoSth();
Console.WriteLine($"主线程开始沉睡");
Thread.Sleep(2000);
Console.WriteLine($"主线程沉睡结束,顺便结束task");
cancellationTokenSource.Cancel();
Console.ReadKey();
}
static CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
static async void DoSth() {
Task task = Task.Run(() => {
Console.WriteLine($"Task任务开始沉睡");
Thread.Sleep(3000);
Console.WriteLine($"Task任务沉睡结束,执行完成");
}, cancellationTokenSource.Token);
await Task.FromCanceled(cancellationTokenSource.Token);
Console.WriteLine($"DoSth 任务完成");
}
运行结果及报错内容
我尝试这样使用 但是报错了
我的解答思路和尝试过的方法
我刚开始以为是持有取消标记的任务被取消就会使await Task.FromCanceled(cancellationTokenSource.Token);的等待结束 而执行后续方法,可是按照我的测试报错了,我现在有点不懂这个方法的用途是什么?
我想要达到的结果
希望 有老哥给详细说下