zoukankan
html css js c++ java
创建单例winform应用程序
方法1:
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Threading; using System.Reflection; static class Program { private static Mutex singleton; /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); bool has=Check() ; if (has) { Form form = new Form1(); form.FormClosed += new FormClosedEventHandler(form_FormClosed); Application.Run(form); } else { MessageBox.Show("程序已启动"); } } static void form_FormClosed(object sender, FormClosedEventArgs e) { if (singleton != null) { singleton.Close(); } } private static bool Check() { bool has=false; singleton=new Mutex(false,Assembly.GetExecutingAssembly().FullName,out has); // Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName; return has; } } }
方法2:
static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Process instance = RunningInstance(); //Get the running instance. if (instance == null) { //There isn 't another instance, show our form. Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } else { Message.WriteErrMsg("程序已运行,请勿再次运行!"); } } public static Process RunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); //Loop through the running processes in with the same name foreach (Process process in processes) { //忽略当前进程<strong> </strong> if (process.Id != current.Id) { //Make sure that the process is running from the exe file. if (Assembly.GetExecutingAssembly().Location.Replace("/ ", "\\ ") == current.MainModule.FileName) { //Return the other process instance. return process; } } } //No other instance was found, return null. return null; } }
方法1:不能避免多用户时的情况,多用户登陆系统时,还是可以开启多个实例的。
方法2:检查系统进程,可以解决多用户的问题,推荐方法2.
查看全文
相关阅读:
二级指针内存模型(二)
Winserver-FailoverCluster验证异常
IIS-This configuration section cannot be used at this path.
SQL SERVER-Extendevent捕获堵塞
SQL SERVER-Extendevent
Powershell-加域脚本
SQL SERVER-端口Port
WinServer-SMTP服务
Linux-开机启动程序
SQL SERVER-修改服务器名称
原文地址:https://www.cnblogs.com/zhangqs008/p/2341101.html
最新文章
Python爬虫利器三之lxml库以及Xpath语法
高级结果映射
SQL 映射 XML 文件
Mapper XML 配置
Mybatis 作用域和生命周期
MyBatis 是什么?
解决 jQuery 和其他库的冲突
jQuery 对象和 DOM 对象
jQuery 技巧
jQuery 性能优化和技巧
热门文章
jQuery $.ajax方法
数组类型、数组类型指针、数组指针变量
select()函数
原始套接字
多级指针使用分割字符串
BMP图像信息隐藏
BMP文件格式详解(BMP file format)
BMP文件格式
多级指针传入传出
二级指针内存模型(三)
Copyright © 2011-2022 走看看