创建单例winform应用程序
来源:互联网 发布:遗像制作软件 编辑:程序博客网 时间:2024/05/22 16:51
方法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) { //忽略当前进程 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.
- 创建单例winform应用程序
- 创建单例winform应用程序的一种更好的方式
- 使用 Mutex 创建 单例应用程序
- C#创建单实例应用程序
- C#创建单实例应用程序
- C# WinForm应用程序创建启动界面
- 实现单进程(Single Instance)的.NET WinForm应用程序
- winform 单例模式 单线程例子
- winform中的单例模式
- winform中console.write的使用、线程的产生、线程的使用、创建单例模式
- 单文档应用程序的创建过程
- WPF之创建单实例应用程序
- 应用程序单例
- 用c#创建支持多语言的WinForm应用程序
- 用c#创建支持多语言的WinForm应用程序
- 用c#创建支持多语言的WinForm应用程序
- 用c#创建支持多语言的WinForm应用程序
- Visusal Studio创建Winform窗体应用程序的步骤
- oprofile: a System-Wide Profiler
- iphone开发面试-葵花宝典
- VIE结构
- 静态与非静态方法,静态代码块,程序代码块的用法
- access加密后c#连接字符串
- 创建单例winform应用程序
- VIE模式的实例
- 还是c链表
- 16个经典面试问题回答思路
- Byte of Python学习笔记二
- python challenge 第六关解法 http://www.pythonchallenge.com
- 谷歌中国已由搜索转为展示广告提供商,转身意味着什么
- VC++ ----> 多线程AfxBeginThread
- jquery+笔记