+ -
当前位置:首页 → 问答吧 → 为什么ReleaseMutex不会释放锁?

为什么ReleaseMutex不会释放锁?

时间:2011-12-28

来源:互联网

我仅仅是想测试一下Mutex类的用法,代码如下:
C# code
static class Program
    {

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            try
            {
                const string mutextName = "wwwwwwwwhhhwlllllll77777777ll9999llllwwww";
                Mutex m = new Mutex(true, mutextName);
                bool b = m.WaitOne(TimeSpan.Zero, true);
                MessageBox.Show(b.ToString());
                
                m.ReleaseMutex();
                
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
    }


第一次运行: b 的值为 True
不要关闭,再运行一次该程序。
发现 b 的值为 False.
为什么?

作者: stop___   发布时间: 2011-12-28

C# code
Mutex m = new Mutex(true, mutextName);
这里必须改为
C# code
Mutex m = new Mutex(false, mutextName);

你是2个不同应用程序域之间同步,因此这里不能指定为true。详细解释请看MSDN。

作者: qldsrx   发布时间: 2011-12-28

http://www.codeproject.com/KB/cs/SingleInstanceAppMutex.aspx?display=Print

作者: caozhy   发布时间: 2011-12-28