首页 新闻 会员 周边 捐助

C# Timer 疑问

0
[待解决问题]

为什么第一个导致程序崩溃,第二个不会 ?

timer.Elapsed += async (sender, e) =>
{
    await Task.Delay(1000);
    throw new Exception();
};
timer.Start();
timer.Elapsed += (sender, e) =>
{
    throw new Exception();
};
timer.Start();
hiboy1的主页 hiboy1 | 菜鸟二级 | 园豆:202
提问于:2024-11-20 21:19
< >
分享
所有回答(4)
0

你的timer是1s执行一次吗?

echo_lovely | 园豆:1568 (小虾三级) | 2024-11-21 10:05

是的

支持(0) 反对(0) hiboy1 | 园豆:202 (菜鸟二级) | 2024-11-24 21:54
0

只要执行到throw new Exception();就会有未处理的异常. 除非你第二段代码就没有运行..

www378660084 | 园豆:1322 (小虾三级) | 2024-11-21 10:39
0

崩溃错误信息是什么

茂茂 | 园豆:2902 (老鸟四级) | 2024-11-25 16:34
0

怎么感觉应该是第一个不会第二个会呢……

试了一下,确实是题主描述的这样,但可能不是大家理解的那个情况。我是在一个 winform 应用里,在点击 button 之后执行这个:

            var timer = new System.Timers.Timer();
            timer.Elapsed += async (_, _) =>
            {
                timer.Stop();
                throw new Exception();
            };
            timer.Start();

然后用 vs 调试运行,出现异常之后,会回到 vs ,这时候不管它,直接继续运行。这时候如果没有 async ,程序仍然继续运行,界面还是在那里,但如果有 async 会直接闪退。

不知道和题主说的是不是一回事。

yueyinqiu | 园豆:202 (菜鸟二级) | 2024-12-29 22:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册