临时弄了一个,还可以用。请高手指点一下存在的不足
//加上引用
using System.ServiceProcess;
using System.Reflection;
//窗体加载的时候引用
//当前程序集名称
string appName = Assembly.GetExecutingAssembly().GetName().Name;
// 只运行一个实例程序
OnlyOneProcess(appName);
/// <summary>
/// 只运行一个实例程序
/// </summary>
/// <param name="appName">程序名称,不要EXE</param>
private void OnlyOneProcess(string appName)
{
int len = 0;
//得到所有进程
Process[] pro = Process.GetProcesses();
for (int i = 0; i < pro.Length; i++)
{
try
{
//每个进程的名称
string newAssemblyName = Assembly.LoadFile(pro[i].MainModule.FileName).GetName().Name;
if (appName == newAssemblyName)
{
len++;
}
}
catch
{
continue;
}
}
if (len > 1)
{
MessageBox.Show("程序已经在运行", "提示");
this.Close();
Application.Exit();
}
}