【发布时间】:2016-09-13 22:11:59
【问题描述】:
我一直在学习使用 TPL,但对我从 article 收集的示例有疑问。我复制并粘贴了与 Task.Run 示例中完全相同的代码,但收到一条错误消息,指出未处理异常:
private async void button1_Click(object sender, EventArgs e)
{
try
{
await Task.Run(() =>
{
Thread.Sleep(1000);
throw new InvalidOperationException("Hi!");
});
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这是错误的图片:
这个代码示例是过时了还是我遗漏了什么?
【问题讨论】:
-
我认为你需要使用
invoke(),但我不确定 -
如果您不在调试器中运行此代码,我怀疑您会发现显示消息框 - 您尝试过吗?异常不是由运行任务的线程中的代码处理的,但是您要单独捕获它...我怀疑调试器在这里有点误导。
-
@JonSkeet 你是对的。不使用调试器时它工作正常
标签: c# .net try-catch task-parallel-library task