我一直试图找出为什么我得到一个最近开始行为不端的异步代码的TaskCanceledException.我把问题简化为一个让我挠头的小代码片段:
static void Main(string[] args)
{
RunTest();
}
private static void RunTest()
{
Task.Delay(1000).ContinueWith(t => Console.WriteLine("{0}", t.Exception), TaskContinuationOptions.OnlyOnFaulted).Wait();
}
据我所知,这应该暂停一秒然后关闭.不会调用ContinueWith(这仅适用于我的实际用例).但是,相反,我得到一个TaskCanceledException,我不知道它来自哪里!
最佳答案 您正在使用错误的taskcontinuationoption:
它说 :
指定仅在其前件抛出未处理的异常时才应安排延续任务.此选项对多任务延续无效.