根据文档,Task.Delay可以在丢弃令牌时抛出ObjectDisposedException。
但是,我在CancellationToken上找不到任何表明已被丢弃的东西。
此外,部署CancellationTokenSource不会导致Task.Delay可以引发ObjectDisposedException。
那么,什么原因可能导致Task.Delay抛出ObjectDisposedException?
这里是一个C#代码示例,尝试重现记录的行为:
var cts = new CancellationTokenSource();
cts.Dispose();
await Task.Delay(200, cts.Token); // System.ObjectDisposedException
实际上不是引发Task.Delay
,而是尝试访问Token
的CancellationTokenSource
属性。所以不,我也没有设法重现记录的行为。