什么时候应该使用WaitHandle而不是锁

Xaq*_*ron 3 c# locking waithandle

C#什么时候应该使用WaitHandle代替lock

Jim*_*hel 5

锁根本不同于锁WaitHandle。使用锁写,例如:

lock (SomeResource)
{
    // do stuff here
}
Run Code Online (Sandbox Code Playgroud)

第一行说:“我想要对该资源的独占访问权”,并将等待直到该资源可用(即没有其他人对其进行锁定)。然后运行代码,最后释放锁,以便其他人可以使用它。

WaitHandle用于等待某些事件发生。当你写:

MyWaitHandle.WaitOne();
Run Code Online (Sandbox Code Playgroud)

您的代码正在等待其他线程(可能在不同的进程中)发出信号WaitHandle。它发出的信号可能是任何东西。也许您正在等待另一个线程完成其工作,然后说“我现在完成了”,然后代码才能继续。

因此,要回答您的问题,当您要获得对资源的独占访问权限时,应使用锁。WaitHandle当您想收到某些事件的通知时应使用。