【发布时间】:2015-11-11 01:44:41
【问题描述】:
我在捕获来自Task.Run 的异常时遇到了问题,该问题已通过如下更改代码得到解决。我想知道这两种方式处理异常的区别:
在Outside 方法中我无法捕获异常,但在Inside 方法中我可以。
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);
}
});
}
【问题讨论】:
-
如果 OP 没有使用
await,这不是重复的...如果他使用的是 .net 4.x,他就不能使用await。 -
@MatthewWatson 你确定吗?
await是 .NET 4.x! -
@MatthewWatson 另一方面,他是否使用
await是否重要?答案几乎是一样的。 -
@MatíasFidemraizer 这需要 VS2012 或更高版本。 VS2010 不可能。我应该更准确地说
await需要 C#5
标签: c# multithreading exception concurrency task