Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# equivalent to java's wait and notify?

I am aware that you can lock an object in c# using lock but can you give up the lock and wait for something else to notify you that it's changed like you can in java with wait and notify?

It seems to me that synchronised and lock in java and c# respectively are synonomous.

like image 250
Omar Kooheji Avatar asked Oct 16 '08 16:10

Omar Kooheji


2 Answers

The equivalent functionality (including the normal locking) is in the Monitor class.

foo.notify() => Monitor.Pulse(foo) foo.notifyAll() => Monitor.PulseAll(foo) foo.wait() =>  Monitor.Wait(foo) 

The lock statement in C# is equivalent to calling Monitor.Enter and Monitor.Exit with an appropriate try/finally block.

See my threading tutorial or Joe Albahari's one for more details.

like image 80
Jon Skeet Avatar answered Oct 04 '22 11:10

Jon Skeet


I think Wait Handles may work for you. See if this helps.

like image 32
EBGreen Avatar answered Oct 04 '22 10:10

EBGreen