互斥锁防止程序被多次打开

            bool createdNew;
            var mutex = new Mutex(false, "CC_Client", out createdNew);
            if (createdNew)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new FormMain());
                mutex.Close();
            }

当代码中没有mutex.Close();这句时,Debug模式下程序可以正常的判断互斥锁已经存在,从而防止程序被多次运行。但是在Release模式下,每次开启程序的时候,互斥锁的判断都是不存在,程序可以被任意次打开。


Debug模式下,为了便于调试,互斥锁的生存期被人为的延长了。因此可以成功的判断互斥锁的存在。但是Release模式下,由于mutex在随后的代码中没有被调用过,当它被创建成功之后就立刻被释放了。因此每次对它的判断都是不存在。

添加了mutex.Close();后,由于对此对象存在调用,因此在Application.Run(new FormMain());结束之前,mutex都不会被释放。Release模式下可以正确的判断互斥锁的存在了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值