zoukankan      html  css  js  c++  java
  • C# 防止程序多开(重复开启)

    Mutex(mutual exclusion,互斥)是 .Net Framework 中提供跨多个线程同步访问的一个类。它非常类似了 Monitor 类,因为他们都只有一个线程能拥有锁定。而操作系统能够识别有名称的互斥,我们可以给互斥一个唯一的名称,在程序启动之前加一个这样的互斥。这样每次程序启动之前,都会检查这个命名的互斥是否存在。如果存在,应用程序就退出。

    下面我们使用互斥体,做到同时只运行一个程序:

    示例1

    bool isNotRunning;  //互斥体判断
    System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out isNotRunning);   //同步基元变量
    if (!isNotRunning)  // 如果不是未运行状态
    {
       MessageBox.Show("程序已在运行");
       Environment.Exit(1);
    }
    MessageBox.Show("欢迎使用本软件");
    

    示例2

    bool isAppRunning = false;
    //设置一个名称为进程名的互斥体
    Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRunning);
    if (!isAppRunning)
    {
        MessageBox.Show("程序已运行,不能再次打开!");
        Environment.Exit(1);
    }
    MessageBox.Show("欢迎使用本软件");
    
    文章来自:chenxuhua.com
  • 相关阅读:
    poj-2376 Cleaning Shifts (排序+贪心)
    AOJ 0525
    POJ -3050 Hopscotch
    POJ-2718 Smallest Difference
    AOJ 0121: Seven Puzzle (BFS DP STL 逆向推理)(转载)
    POJ-3187 Backward Digit Sums (暴力枚举)
    POJ-3669 Meteor Shower(bfs)
    分布式消息系统Kafka初步
    nginx源码学习----内存池
    def文件格式
  • 原文地址:https://www.cnblogs.com/chenxuhua/p/using-mutex-to-prevent-multiple-application-launches.html
Copyright © 2011-2022 走看看