等待完成由于废弃的互斥量

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 的评论中]

抛出异常