一个Exe,
防止多重启动Debug下的exe可以检测多重启动
Release下的Exe没有效果,
代码如下 bool createdNew;
Mutex mutex = new Mutex(true, Application.ProductName, out createdNew);
if (!createdNew)
{
Process instance = RunningInstance();
if (instance != null)
{
Win32NoSafeMethods.HandleRunningInstance(instance);
}
return;
}
防止多重启动Debug下的exe可以检测多重启动
Release下的Exe没有效果,
代码如下 bool createdNew;
Mutex mutex = new Mutex(true, Application.ProductName, out createdNew);
if (!createdNew)
{
Process instance = RunningInstance();
if (instance != null)
{
Win32NoSafeMethods.HandleRunningInstance(instance);
}
return;
}
解决方案 »
- 《C#本质论》第三版 这本书怎么样,我准备买!
- C#如何在上传图片时点浏览按钮就可以上传并显示图片?
- ftp文件上传服务器问题
- 多个窗体之间的传值问题~~??
- 有人用c#整合过discuz的passport吗???
- 100分收购关于.NET/C#方面的技术网站或者Blog!!!大家推荐一下自己经常去的技术网站或者Blog。
- 请问C#的高手们!VS2005编译完成之后的那个.exe文件为什么不能在别的电脑上运行?怎样解决??谢谢!
- DataSet.Tables["xx"].Rows[dataGrid1.CurrentCell.RowNumber].Delete();删除行时出现在的问题~
- WebClient.DownloadFile(myStringWebResource,fileName)中"myStringWebResource"如果是ftp协议应怎么写。
- 对数据的操作(用SQL数据库的)
- 有关Socket.Available的怪异问题,大家快来凑热闹,同时show一下各位的Socket珍藏代码
- socket 服务器和客户端通信
疑惑
bool createdNew;
Mutex mutex = new Mutex(true, Application.ProductName, out createdNew);
if (!createdNew)
{
...
return;
}
Application.Run( ... );
mutex.Close(); //<--加这一句
原因:Mutex被垃圾回收后就被释放了。
bool createdNew;
Mutex mutex = new Mutex(true, Application.ProductName, out createdNew);
if (!createdNew)//在Release编译下的exe,createdNew的值是true,在Debug下是false
{
Process instance = RunningInstance();
if (instance != null)
{
Win32NoSafeMethods.HandleRunningInstance(instance);
}
return;
}
比如断点设在最后一行,这时候检查mutex的值。如果mutex被回收了,调试器显示它的内容就会出错。Release版则不不一样,所以你的问题只出现在Release版下。
碰到这种情况,该如何处理?
谢谢
mutex.Close(); 加不加这一句,对于createdNew的结果有影响吗?
好像没有