Reputation: 2082
Is it possible to repeat multiple times the ManualResetEvent?
Something like this:
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.
So my question is:
Is it possible to execute multiple times like a loop the same WaitOne(); and Set();?
EDIT:
I have a button, when I click it run a function to start my tcpclient.
After that I wait for some response from the server with the receivedDone.WaitOne();
when I receive the message on my buffer, it goes to receivedDone.Set();
. This works 1 time, but I want to make it multiple times with the same WaitOne(); and Set();
Is this possible?
Upvotes: 1
Views: 1366
Reputation: 822
As the name says, a ManualResetEvent
must be reset manually. It is like a door. It is initialized with
ManualResetEvent ev = new ManualResetEvent(false); // The door is closed
or
ManualResetEvent ev = new ManualResetEvent(true); // The door is open
A thread, which calls WaitOne
passes the door if is is open, otherwise waits at the door until it opens.
A call of
ev.Set();
opens the door and a call of
ev.Reset();
closes the door.
As far as I understand your question, an AutoResetEvent
would help more. Or even better create a async function which proceed the TCP call and returns the result.
Upvotes: 5