我一直在试图找出我为什么会在最近开始出现问题的一些异步代码中收到TaskCanceledException。我将我的问题简化成了一个小的代码片段,让我感到困惑:
据我所知,这应该只是暂停一秒钟然后关闭。 ContinueWith不会被调用(这仅适用于我的实际用例)。但是,我却收到了一个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,而我不知道它来自哪里!
ContinueWith
返回的继续任务已被取消。在这种情况下,您需要将父任务和继续任务分开,并等待父任务完成。 - Lee