У меня есть следующий код в while
цикли:Поймай и распространяются исключениями в асинхронных методах
Task worker =
Task.Factory
.StartNew(() =>
{
ProduceAsync(param, tokenSource.Token);
}, tokenSource.Token)
.ContinueWith((t) =>
{
OnException(t);
}, TaskContinuationOptions.OnlyOnFaulted);
ProduceAsync
выглядит следующим образом:
private async Task ProduceAsync(List<string> param, CancellationToken token)
{
token.ThrowIfCancellationRequested();
var task = _requestManager.GetProductsAsync(param);
var products;
try
{
products = await task;
_products.Add(products);
}
catch
{
task.GetAwaiter().GetResult();
}
}
Когда есть исключение в запросе асинхронного я хотел программа не работает быстро, поэтому на OnException(t)
Я отменяю задачи, используя tokenSource
. Проблема здесь в том, что ProduceAsync
не распространяется на исключение, а OnException
не вызывается. Как я могу получить его для распространения исключения?
Примечание: Я скопировал код вручную на мой телефон, так что могут быть ошибки компиляции ...
Это сработало! Благодарю. – user6251216