У меня есть код ниже, и я пытаюсь всплыть исключение, выходящее из testFunction (). Когда я пытаюсь запустить код, исключение не выдается.
testFunction - это задача, которую я хочу вызывать через регулярные интервалы
Однако, если я явно добавлю throw new CustomException (); внутри Task.Run код выдает правильно. Я не могу понять это поведение. Я не могу ждать или ждать Task.Run, потому что я хочу, чтобы task.Run запускался самостоятельно, поэтому я использую ContinueWith, но continueWith не перехватывает исключение и, следовательно, не выбрасывает его. Посоветуйте, пожалуйста, что мне здесь не хватает?
public class Example
{
public static CancellationTokenSource source = new CancellationTokenSource();
public static void Main()
{
Console.WriteLine("Hello start");
Task.Run(async () =>
{
while(token.IsCancellationRequested)
{
token.ThrowIfCancellationRequested();
await testFunction(source.Token);
await Task.Delay(1000,token);
}
} ).ContinueWith((t) =>
{
if (t.Exception != null) throw t.Exception;
});
}
public static async Task testFunction(CancellationToken token)
{
throw new CustomException();
}
}