winform判断程序是否运行,且只能运行一个实例
2024-09-01 17:36:25
前言
判断程序是否已经运行,使程序只能运行一个实例有很多方法,下面记录两种。
目前使用的是第一种方法。
方法1:线程互斥
static class Program
{
private static System.Threading.Mutex mutex;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
mutex = new System.Threading.Mutex(true, "OnlyRun");
if(mutex.WaitOne(0, false))
{
Application.Run(new MainForm());
}
else
{
MessageBox.Show("程序已经在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();
}
}
}
方法2
这种检测进程的名的方法,并不绝对有效。因为打开第一个实例后,将运行文件改名后,还是可以运行第二个实例。
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// get the name of our process
string p = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
// get the list of all processes by that name
System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName(p);
// if there is more than one process
if(processes.Length > 1)
{
MessageBox.Show("程序已经在运行中", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();
}
else
{
Application.Run(new MainForm());
}
}
}
最新文章
- 修改Credentials 密码
- Vim插件管理器Vundle使用
- html 页面中显示单行省略号
- git初体验(三)git分支
- DNS劫持
- 获取Assets目录下的图片并显示
- HDU 1043 Eight (A* + HASH + 康托展开)
- git恢复被修改的文件
- linux C连接mysql
- 【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询
- MVC验证02-自定义验证规则、邮件验证
- 让程序同时只能运行一个C++ Builder实现(转)
- #1094 : Lost in the City by C solution
- 【webpack】中file-loader和url-loader使用方法
- MariaDB:开启日志记录SQL
- sql server 性能调优之 逻辑内存消耗最大资源分析1 (自sqlserver服务启动以后)
- python-web微信实现
- this.class.getClassLoader().getResourceAsStream与this.class.getResourceAsStream 文件地址获取
- OOAD之创建型模式之工厂模式
- Maven配置私服仓库