C# WinForm判断程序是否运行,且只能运行单个实例
2015-08-11 08:40
701 查看
C# WinForm判断程序是否已经运行,使程序只能运行一个实例有很多方法。
第一种,通过进程判断是否启动:
第二种,通过线程互斥判断是否启动:
另附:c#中怎样判断一个程序是否正在运行?
第一种,通过进程判断是否启动:
static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { //获取当前进程的ID int pId = Process.GetCurrentProcess().Id; bool isRun = false; foreach (Process p in Process.GetProcessesByName("CallMaster")) { //取得当前程序的进程,进行比较 if (Common.GetPath().ToLower() == p.MainModule.FileName.ToLower()) { if (pId != p.Id) { isRun = true; break; } } } if (isRun==true) { Application.Exit(); return; } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); } }利用放射获取当前应用程序的全路径:
public static string GetPath() { return System.Reflection.Assembly.GetExecutingAssembly().Location; }
第二种,通过线程互斥判断是否启动:
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(); } } }
另附:c#中怎样判断一个程序是否正在运行?
if (System.Diagnostics.Process.GetProcessesByName("程序进程中的名称").ToList().Count > 0) { //存在 } else { //不存在 }总之,判断有方法很多种,大概都是通过当前运行的进程去判断的。
相关文章推荐
- C# 方法的回调(上)
- C#接口和抽象类的区别
- c# 建立局域网远程共享连接,读取共享文件
- C#-MVC开发常见异常处理
- C#高级编程----第一部分完结
- c# 笔试题及参考答案大全
- C#编程:对象序列化为字节数组以及字节数组反序列化为对象
- C#高级编程----错误和异常的总结
- C#高级编程八十二天----用户自定义异常类
- [工具-008] C#邮件发送系统
- C#高级编程八十一天----捕获异常
- C#:XML操作类
- C#之Ref,Out以及TryParse()的用法
- C# 可空修饰符
- C#学习记录
- c# 字体库跨域解决
- ICSharpCode 生成zip文件苹果系统打不开
- C# UDP 连接通信 简单示例
- C#异步调用实例小结
- 洗牌算法与重新排序