锁根本不同于锁WaitHandle。使用锁写,例如:
lock (SomeResource)
{
// do stuff here
}
Run Code Online (Sandbox Code Playgroud)
第一行说:“我想要对该资源的独占访问权”,并将等待直到该资源可用(即没有其他人对其进行锁定)。然后运行代码,最后释放锁,以便其他人可以使用它。
WaitHandle用于等待某些事件发生。当你写:
MyWaitHandle.WaitOne();
Run Code Online (Sandbox Code Playgroud)
您的代码正在等待其他线程(可能在不同的进程中)发出信号WaitHandle。它发出的信号可能是任何东西。也许您正在等待另一个线程完成其工作,然后说“我现在完成了”,然后代码才能继续。
因此,要回答您的问题,当您要获得对资源的独占访问权限时,应使用锁。WaitHandle当您想收到某些事件的通知时应使用。