在等待句柄上设置事件

本文关键字:事件 设置 句柄 在等待 | 更新日期: 2023-09-27 18:36:20

System.Threading.Timer 类具有 Dispose 的覆盖,它采用 WaitHandle。这个想法是,一旦所有计时器回调完成,它就会设置等待句柄,并且您知道关闭是安全的。

遗憾的是,WaitHandle 类上没有方法来设置事件。查看源代码,它直接使用来自 Kernal32 的导入来设置事件。

有没有一种框架友好的方法来设置 WaitHandle?所有示例都使用 WaitHandle 的特定实现,该实现已经有一个 set 方法。似乎有点荒谬,基类上没有 Set 或类似内容。它存在于 EventWaitHandle 上,低于一级。

在等待句柄上设置事件

我允许

在我的方法上作为基本类型,这允许我发出关闭已完成的信号。

执行此操作的现代方法是公开一个Task,当您想要发出信号时,该就会完成。不需要句柄(在 .NET 中大多已过时),也不需要传递任何在体系结构上很尴尬的内容。

Task就像一个事件,但更好,更轻量级。