假设我们有两个按钮点击事件:
如果不进行调试,使用这两个按钮事件处理程序运行程序,那么button2_Click会立即导致错误消息出现。但是button3_Click不会立即导致错误消息出现。我的印象是,如果Task被垃圾回收,那么它会抛出异常。如果Task没有被垃圾回收,则会生成异常,但仍然保留在某个有趣的位置。我尝试在MSDN上找到一些好的示例,但运气不太好。
private void button2_Click(object sender, EventArgs e)
{
using (
System.Threading.Tasks.Task t = new System.Threading.Tasks.Task(() => {
throw new Exception("puzzle");
}))
{
t.Start();
}
}
private void button3_Click(object sender, EventArgs e)
{
System.Threading.Tasks.Task t = new System.Threading.Tasks.Task(() => {
throw new Exception("puzzle");
});
t.Start();
}
如果不进行调试,使用这两个按钮事件处理程序运行程序,那么button2_Click会立即导致错误消息出现。但是button3_Click不会立即导致错误消息出现。我的印象是,如果Task被垃圾回收,那么它会抛出异常。如果Task没有被垃圾回收,则会生成异常,但仍然保留在某个有趣的位置。我尝试在MSDN上找到一些好的示例,但运气不太好。
Task.Run
时,这种情况是否仍会发生? - Abion47