.net - 注册 CancellationToken.None 是否安全?

标签 .net multithreading asynchronous task-parallel-library cancellation-token

为什么以下甚至是合法的?

CancellationToken.None.Register(delegate { });

为什么,例如, Register 不在这里抛出异常?是不是因为上面等于 NOP ?

背景:问这个问题的原因是要了解一个方法是否接受 CancellationToken需要针对 CancellationToken.None 进行防御性编码涉及注册时。

最佳答案

CancellationToken.None不是空引用,而是空的取消标记。因此,它确实有一个实例。注册永远不会触发,因为源永远不会注册为被取消,但它会“正确地”通过。

但是,除非您小心处理 CancellationTokenRegistration,否则我仍然会对此进行检查和编码。正确返回。

编辑:

经进一步调查,如果您注册 CancellationToken.None ,你实际上什么都不做,CancellationTokenRegistration退回将不需要处理。这不会保留对您的对象或委托(delegate)的引用,也不会形成泄漏,因此出于实际目的,它是无操作的。这应该是安全的,并且不应该要求您最终避免采取防御措施。

关于.net - 注册 CancellationToken.None 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489553/

相关文章:

java - 使用 Future 异步读取文件

java - 多线程同步 ArrayList 编辑

javascript - Node.js - 异步方法调用问题

c# - 元组到元组的转换

c# - 跨进程(和机器)同步(信号量)

c# - 为什么在不同线程中创建窗口时有时会出现 "Invalid window handle"异常

javascript - 动态添加的对象属性未在 Javascript 中添加

go - 如何优化向 API 发出请求的 for 循环?

.net - 多线程自承载 WCF 服务

.NET Standard、.NET Core 和 .NET Framework 项目解决方案的 .NET 命名约定