System.Threading.Timer类有一个Dispose重写,它接受一个WaitHandle。这个想法是,一旦所有计时器回调完成,它就会设置等待句柄,你就知道可以安全地关闭它了。
不幸的是,WaitHandle类上没有用于设置事件的方法。通过查看源代码,它实际使用来自Kernal32的导入来设置事件。
有没有框架友好的方法来设置WaitHandle?所有的例子都使用了一个特定的WaitHandle实现,它已经有了一个set方法。看起来有点荒唐,基类上没有Set或类似的东西。它存在于比它低一级的EventWaitHandle上。
发布于 2016-02-25 22:48:01
我允许在我的方法上使用EventWaitHandle作为基类型,这允许我发出关闭完成的信号。
现代的方法是公开一个Task,当你想发出信号时,这个a就会完成。不需要句柄(在.NET中几乎已经过时了),也不需要传递任何在架构上很笨拙的东西。
Task类似于一个事件,但更好,更轻量级。
https://stackoverflow.com/questions/35627651
复制相似问题