winform实现只能打开一次

Posted 过了这个村

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform实现只能打开一次相关的知识,希望对你有一定的参考价值。

 

//在程序的main函数中加入以下代码 
bool createdNew; 
System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out createdNew); 
if (createdNew) 
{ 
  Application.Run(new LoginForm()); 
  instance.ReleaseMutex(); 
} 
else 
{ 
  Application.Exit(); 
} 
//还可以写成以下形式,一个窗体只能启动一次 
Form1 a = new Form1(); 
bool createdNew; 
System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out createdNew); 
if (createdNew) 
{ 
  a.ShowDialog(); 
  instance.ReleaseMutex(); 
} 
else 
{ 
  a.Close(); 
}

 

private static bool HasRunning()
{
    Process currentProcess = Process.GetCurrentProcess();
    Process[] processCollection = Process.GetProcessesByName(currentProcess.ProcessName);
    foreach (Process p in processCollection)
    {
        if (p.Id == currentProcess.Id)  //检查ID是否相同
        {
            return true;
        }
    }
    return false;
}

 

//预防程序启动多个
bool newMutexCreated = true;
using (new Mutex(true, Assembly.GetExecutingAssembly().FullName, out newMutexCreated))
{
if (!newMutexCreated)
{
MessageBox.Show("程序已启动!请不要启动多个程序");
System.Environment.Exit(0);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
}

 

以上是关于winform实现只能打开一次的主要内容,如果未能解决你的问题,请参考以下文章

winform如何让窗体只打开一次

winform实现父窗体里面只能打开一个子窗体

为啥做完的excel表只能打开一次,重启后才能打开第二次?

为啥在开机之后interent浏览器只能打开一次,以后就再也打不开了,怎么解决,急要

如果没有用minicom打开一次,则无法从串口读取

Winform开发中的窗体重复及灵活切换问题