在等待句柄上设置事件
本文关键字:事件 设置 句柄 在等待 | 更新日期: 2023-09-27 18:36:20
System.Threading.Timer 类具有 Dispose 的覆盖,它采用 WaitHandle。这个想法是,一旦所有计时器回调完成,它就会设置等待句柄,并且您知道关闭是安全的。
遗憾的是,WaitHandle 类上没有方法来设置事件。查看源代码,它直接使用来自 Kernal32 的导入来设置事件。
有没有一种框架友好的方法来设置 WaitHandle?所有示例都使用 WaitHandle 的特定实现,该实现已经有一个 set 方法。似乎有点荒谬,基类上没有 Set 或类似内容。它存在于 EventWaitHandle 上,低于一级。
我允许在我的方法上作为基本类型,这允许我发出关闭已完成的信号。
执行此操作的现代方法是公开一个Task
,当您想要发出信号时,该就会完成。不需要句柄(在 .NET 中大多已过时),也不需要传递任何在体系结构上很尴尬的内容。
Task
就像一个事件,但更好,更轻量级。