[我正在尝试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!
似乎我的实验是错误的。通过将任务的创建转移到单独的方法,可以正确地收集任务,从而获得了预期的输出。这是我的更正代码:
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!