本文引自:https://www.cnblogs.com/yuanlipu/p/7442611.html(个别地方本人经过验证后修改添加)
方法一:亲测可用(此方法在二次打开时,弹出提示信息,退出时闪现退出窗口,体验感不太好)
在项目的第一个窗体的启动事件中 如form1_load() 中调用如下语句:
//判断是否重复打开
public void check(object sender, EventArgs e)
{
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("WindowsFormsApplication1");//获取指定的进程名
if (myProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动
{
MessageBox.Show("程序已启动!");
Application.Exit(); //关闭系统
}
}
================================================================================================
方法二 :未测试(引用前未测试,经本人测试可用,个人感觉比方法一要好些,二次打开时就提示,没有方法一中的闪现退出窗口的现象)
在项目的启动引导文件 Program.cs中加入判断语句:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
bool isRuned;
System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned);
if (isRuned)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
mutex.ReleaseMutex();
}
else
{
MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
评论