首页 新闻 会员 周边

C# Task 什么情况下,会把状态置为Faulted

0
悬赏园豆:5 [已解决问题] 解决于 2016-11-20 14:41

 请问是在抛出异常的情况下,会置task状态为Faulted吗

sicnu-yudidi的主页 sicnu-yudidi | 初学一级 | 园豆:108
提问于:2016-07-10 15:24
< >
分享
最佳答案
0

由于未处理异常的原因而完成的任务。

官方帮助:

https://msdn.microsoft.com/zh-cn/library/system.threading.tasks.taskstatus%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

 

例子:

            var task= Task.Run(() => { throw new NotImplementedException(); });
            task.GetAwaiter().OnCompleted(() =>
            {
                var st = task.Status; // st == Faulted
            });

 

Task 任务内的异常未被处理(捕获),则task状态被设置为Faulted,这是任务仍然是“完成了”,因此会触发 .GetAwaiter().OnCompleted。Task内异常会被抛到Task外面

收获园豆:5
虾。 | 菜鸟二级 |园豆:257 | 2016-07-11 12:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册