ManualResetEvent(WaitOne 和 Set)重复多次

ManualResetEvent (WaitOne and Set) repeating multiple times

是否可以多次重复 ManualResetEvent?

像这样:

receivedDone.WaitOne();
//something here
receivedDone.Set(); //this go back to receivedDone.WaitOne()
//when executing the second time will loop the receivedDone.Set() and not returning 
//again to receivedDone.WaitOne(); like I wanted.

所以我的问题是:

是否可以像循环一样多次执行同一个WaitOne();和 Set();?

编辑:

我有一个按钮,当我点击它时 运行 一个启动我的 tcpclient 的函数。

之后,当我在缓冲区中收到消息时,我使用 receivedDone.WaitOne(); 等待服务器的一些响应,它转到 receivedDone.Set(); 。这工作了 1 次,但我想用相同的 WaitOne();和设置();

这可能吗?

顾名思义,ManualResetEvent 必须手动重置。它就像一扇门。它用

初始化
ManualResetEvent ev = new ManualResetEvent(false);  // The door is closed

ManualResetEvent ev = new ManualResetEvent(true);  // The door is open

如果门打开,调用 WaitOne 的线程通过门,否则在门打开之前等待。

的来电
ev.Set();

开门,

来电
ev.Reset();

关上门。

据我了解您的问题,AutoResetEvent 会更有帮助。或者甚至更好地创建一个异步函数来进行 TCP 调用和 returns 结果。