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 结果。
是否可以多次重复 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 结果。