等待完成由于废弃的互斥量
Wait Completed Due to abandoned mutex
虽然 运行 以下应用程序的第一个实例会打印 "Acquired"。
但是,如果我开始第二个,它会等待 1 分钟。
在此间隔期间,如果按 enter 键并离开 "first instance",它会在第二个实例中抛出 "Wait Completed Due to abandoned mutex" 异常。
难道不应该获取线程吗?! (一审已经发布了?!)
using (var m1 = new Mutex(false, "consoleapp"))
{
if (!m1.WaitOne(60000, false))
{
Console.WriteLine("It is already runnig");
}
else
{
Console.WriteLine("Acquired");
Console.ReadLine();
}
}
您应该通过在 else 块中调用 m1.Release() 来显式释放互斥体的所有权。否则它会被处理但不会被释放,因此 WaitOne() [在 Hristo 的评论中]
抛出异常
虽然 运行 以下应用程序的第一个实例会打印 "Acquired"。 但是,如果我开始第二个,它会等待 1 分钟。 在此间隔期间,如果按 enter 键并离开 "first instance",它会在第二个实例中抛出 "Wait Completed Due to abandoned mutex" 异常。 难道不应该获取线程吗?! (一审已经发布了?!)
using (var m1 = new Mutex(false, "consoleapp"))
{
if (!m1.WaitOne(60000, false))
{
Console.WriteLine("It is already runnig");
}
else
{
Console.WriteLine("Acquired");
Console.ReadLine();
}
}
您应该通过在 else 块中调用 m1.Release() 来显式释放互斥体的所有权。否则它会被处理但不会被释放,因此 WaitOne() [在 Hristo 的评论中]
抛出异常