//前面用过Mutex可以实现程序的单实例,但是在我们的项目中不行,所以在网上找了一下,觉得下面这个方式不错,与大家分享!需要调VB库。下面附上源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;
namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
SingleInstanceManager manager = new SingleInstanceManager();//单实例管理器
manager.Run(new string[] { });
}
// Using VB bits to detect single instances and process accordingly:
// * OnStartup is fired when the first instance loads
// * OnStartupNextInstance is fired when the application is re-run again
// NOTE: it is redirected to this instance thanks to IsSingleInstance
public class SingleInstanceManager : WindowsFormsApplicationBase
{
Form1 app;
public SingleInstanceManager()
{
this.IsSingleInstance = true;
}
protected override bool OnStartup(Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e)
{
// First time app is launched
//app = new SingleInstanceApplication();
//app.Run();
app = new Form1();//改为自己的程序运行窗体
Application.Run(app);
return false;
}
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
{
// Subsequent launches
base.OnStartupNextInstance(eventArgs);
app.Activate();
MessageBox.Show(Application.ProductName + " 已经在运行了,不能重复运行。", "确定", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);//给个对话框提示
}
}
}
}
原文出处
C# 单实例运行
最新推荐文章于 2021-01-09 20:02:40 发布