如何只让Windows程序只启动一个实例,第二个实例启动只激活第一个实例
一
/// <summary>
/// 从这里开始运行
/// </summary>
[STAThread]
static void Main()
{
Process instance = RunningInstance();
if (instance == null)
{
//没有实例在运行
WeatherApp appInstance = new WeatherApp();
appInstance.StartMainGui();
}
else
{
//已经有一个实例在运行
HandleRunningInstance(instance);
}
}
确保只有一个实例
/// 从这里开始运行
/// </summary>
[STAThread]
static void Main()
{
Process instance = RunningInstance();
if (instance == null)
{
//没有实例在运行
WeatherApp appInstance = new WeatherApp();
appInstance.StartMainGui();
}
else
{
//已经有一个实例在运行
HandleRunningInstance(instance);
}
}
确保只有一个实例
二
[STAThread]
static void Main(string[] args)
{
bool isFirst;
System.Threading.Mutex mutex=new System.Threading.Mutex(true,"WindowAppTest",out isFirst);
//这里的myApp是程序的标识,建议换成你的程序的物理路径,这样的话如果在一个操作系统中这个标志不会和其它程序冲突
if(!isFirst)
{
MessageBox.Show("Exist");
Environment.Exit(1);//实例已经存在,退出程序
}
else
{
Application.Run(new Form1());
}
}
static void Main(string[] args)
{
bool isFirst;
System.Threading.Mutex mutex=new System.Threading.Mutex(true,"WindowAppTest",out isFirst);
//这里的myApp是程序的标识,建议换成你的程序的物理路径,这样的话如果在一个操作系统中这个标志不会和其它程序冲突
if(!isFirst)
{
MessageBox.Show("Exist");
Environment.Exit(1);//实例已经存在,退出程序
}
else
{
Application.Run(new Form1());
}
}