我想根據ManualResetEvent的Sets/Resets創建一個IObservable-stream,例如,原則上類似於ManualResetEvent到IObservable <bool>(或WaitHandle到IObservable <Unit>)?
IObservable<bool> ToObservable(ManualResetEvent ev)
{
var s = new Subject<bool>();
ev.OnSet += s.OnNext(true);
ev.OnReset += s.OnNext(false);
return s;
}
只有ManualResetEvent不會公開這些事件。那麼有沒有什麼方法可以觀察這種情況何時停止/重置?
對於記錄來說,如果設置/未設置爲真/假的區分是不可能的,那麼只要ManualResetEvent的狀態改變也是可以的,則更簡單的IObservable單元推動一個值。
有沒有辦法做到這一點?
我找到了一個文章,解釋如何轉換一個ManualResetEvent的(或者說,在一般的WaitHandle)到一個任務(Wrapping ManualResetEvent as awaitable task),這似乎只要完成下一次是ManualResetEvent的變化(從設定到未設置或其他方式)。 但我還沒有真正找到任何方式,我可以如何將它鏈接到一個序列中(例如,在任務完成後,我需要爲下一個事件創建另一個事件等,並以某種方式創建一個可見的「遞歸」序列)
謝謝!