class OneAtATimePlease
{
static void Main()
{
using (var mutex = new Mutex(false, "oreilly.com OneAtATimeDemo"))
{
if (mutex.WaitOne(TimeSpan.FromSeconds(3), false))
RunProgram();
else
{
Console.WriteLine("Another instance of the app is running. Bye!");
return;
}
}
}
static void RunProgram()
{
Console.WriteLine("Running. Press Enter to exit");
Console.ReadLine();
}
}
但这些行等待某人调用Set()
函数:
if (mutex.WaitOne(TimeSpan.FromSeconds(3), false))
RunProgram();
谁在这里打电话给set
?这个帖子永远不会被释放......(或将会?)
我错过了什么?
答案 0 :(得分:1)
如果有人没有运行,WaitOne()会立即返回true。否则,它阻止!然后程序结束,导致其中一个等待程序立即返回true。