我正在使用互斥锁来确保 Web 服务一次只运行一次,但我无法使用 WaitOnce 和 ReleaseMutex 100% 正确地实现它。
我有这个:
private static Mutex mutex = new Mutex();
[WebMethod]
public bool TriggerAll()
{
bool ranJobs = false;
try
{
if (mutex.WaitOne(0, false))
{
Thread.Sleep(10000); // simulate a long operation
ranJobs = true;
}
}
finally
{
mutex.ReleaseMutex();
}
return ranJobs;
}
如果我尝试立即访问 web 服务两次,第二次调用不会返回 false,但我从 mutex.ReleaseMutex 获得 ApplicationException(“objectsyncronization 方法是从 onsyncronized 代码块调用的” - 大致翻译自瑞典语)
最好的方法是什么?