Task.Delay何时可以抛出ObjectDisposedException?

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

根据文档,Task.Delay可以在丢弃令牌时抛出ObjectDisposedException。

但是,我在CancellationToken上找不到任何表明已被丢弃的东西。

此外,部署CancellationTokenSource不会导致Task.Delay可以引发ObjectDisposedException。

那么,什么原因可能导致Task.Delay抛出ObjectDisposedException?

参考:https://referencesource.microsoft.com/#mscorlib/system/threading/Tasks/Task.cs,5fb80297e082b8d6,references

.net task-parallel-library
1个回答
0
投票

这里是一个C#代码示例,尝试重现记录的行为:

    var cts = new CancellationTokenSource();
    cts.Dispose();
    await Task.Delay(200, cts.Token); // System.ObjectDisposedException

实际上不是引发Task.Delay,而是尝试访问TokenCancellationTokenSource属性。所以不,我也没有设法重现记录的行为。

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