为了只允许运行应用程序的单个实例,我正在使用互斥锁.代码如下.这是正确的方法吗?代码中是否有任何缺陷?
当用户第二次尝试打开应用程序时,如何显示已在运行的应用程序.目前(在下面的代码中),我只是显示另一个实例已在运行的消息.
static void Main(string[] args)
{
Mutex _mut = null;
try
{
_mut = Mutex.OpenExisting(AppDomain.CurrentDomain.FriendlyName);
}
catch
{
//handler to be written
}
if (_mut == null)
{
_mut = new Mutex(false, AppDomain.CurrentDomain.FriendlyName);
}
else
{
_mut.Close();
MessageBox.Show("Instance already running");
}
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*r D 14
我这样做了一次,我希望它有所帮助:
bool createdNew;
Mutex m = new Mutex(true, "myApp", out createdNew);
if (!createdNew)
{
// myApp is already running...
MessageBox.Show("myApp is already running!", "Multiple Instances");
return;
}
Run Code Online (Sandbox Code Playgroud)
static void Main()
{
using(Mutex mutex = new Mutex(false, @"Global\" + appGuid))
{
if(!mutex.WaitOne(0, false))
{
MessageBox.Show("Instance already running");
return;
}
GC.Collect();
Application.Run(new Form1());
}
}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://odetocode.com/Blogs/scott/archive/2004/08/20/401.aspx