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.
查看全文
相关阅读:
MySQL中查询表及索引大小的方法
转:一套大而全的系统架构体系与具体落地方案
[转]1年时间业务量疯长40倍,谈人人车的平台架构演进之路
[转]如何实现“持续集成”?闲鱼把研发效率翻了个翻
微服务介绍
Python2.X和Python3.X的w7同时安装使用
黑客与画家阅读体会
Open Source 开发工具集
volatile和不加volatile的区别
VMware改变硬盘空间大小的方法
原文地址:https://www.cnblogs.com/zhangqs008/p/2341101.html
最新文章
SQL Server Management Studio 执行超大脚本文件
C# 启动外部进程
Web 端异步下载文件
WinForm 设置窗体启动位置在活动屏幕右下角
arcgis for js 发布shp数据地图服务
坐标系
针对不同的地图级别对大数据量的点进行聚合
C# 记事本
EF 使用lambda表达式 更新一对多数据时报错
如何制作地图故事使用esri story maps
热门文章
客户端进行定位(无地图API)
道格拉斯-普克算法(JavaScript实现)
简单算法
HTML 图片(image) 左右轮播
软件研发部管理制度
常用工具
软件(敏捷)开发中工作量与工时评估模型
https://www.cnblogs.com/spec-dog/p/11161744.html
软件(敏捷)开发中工作量与工时评估模型
敏捷开发
Copyright © 2011-2022 走看看