为什么错误的ValueTasks不会触发UnobservedTaskException事件?

问题描述 投票:-1回答:1

[我正在尝试TaskScheduler.UnobservedTaskException事件和TaskScheduler.UnobservedTaskException,并且我注意到当ValueTask在故障状态下完成时未触发该事件。这是正常现象,还是.NET平台的错误?或者我在实验中做错了什么?这是我的代码:

ValueTask

预期输出:

UnobservedTaskException:1!UnobservedTaskException:2!UnobservedTaskException:3!UnobservedTaskException:4!UnobservedTaskException:5!

实际输出(.NET Framework 4.8):

UnobservedTaskException:1!UnobservedTaskException:4!

实际输出(.NET Core 3.0):

UnobservedTaskException:4!UnobservedTaskException:1!

c# task-parallel-library unobserved-exception valuetask
1个回答
0
投票

似乎我的实验是错误的。通过将任务的创建转移到单独的方法,可以正确地收集任务,从而获得了预期的输出。这是我的更正代码:

ValueTask

实际输出(.NET Framework 4.8):

UnobservedTaskException:5!UnobservedTaskException:4!UnobservedTaskException:3!UnobservedTaskException:2!UnobservedTaskException:1!

实际输出(.NET Core 3.0):

UnobservedTaskException:1!UnobservedTaskException:2!UnobservedTaskException:5!UnobservedTaskException:4!UnobservedTaskException:3!

© www.soinside.com 2019 - 2024. All rights reserved.