У меня была проблема с улавливанием моего исключения из Task.Run. Я изменил свой код, и моя проблема была решена. Я хочу выяснить, в чем разница между обработкой исключений внутри Task.Run двумя способами:Как справиться с Task.Run Exception
Внешняя функция Я не могу поймать исключение, но внутри я могу его поймать.
void Outside()
{
try
{
Task.Run(() =>
{
int z = 0;
int x = 1/z;
});
}
catch (Exception exception)
{
MessageBox.Show("Outside : " + exception.Message);
}
}
void Inside()
{
Task.Run(() =>
{
try
{
int z = 0;
int x = 1/z;
}
catch (Exception exception)
{
MessageBox.Show("Inside : "+exception.Message);
}
});
}
EDIT (Дублированное Описание):
Я не хочу, чтобы мои Внутри и вне функций будут асинхронным, так как вызов await Task.Run(...)
нуждаются в функции держателя, чтобы быть асинхронными.
См. [Обработка исключений (параллельная библиотека задач)] (https://msdn.microsoft.com/en-us/library/dd997415%28v=vs.110%29.aspx) –
Это не дубликат, если OP не использует 'await' ... И если он использует .net 4.x, он не может использовать' await'. –
@MatthewWatson Вы уверены? 'await' - .NET 4.x! –