Я пытался понять, почему я получаю исключение 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 и понятия не имею, откуда оно взялось!
Подробнее здесь:
https://stackoverflow.com/questions/286 ... ntinuewith