zoukankan      html  css  js  c++  java
  • WPF 设置程序不允许多开

    同一时刻只允许运行一个实例

    方法一、通过查找同程序集名称的进程数量

    
                #region 检测
    
                string MName = System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName;
                string PName = System.IO.Path.GetFileNameWithoutExtension(MName);
                System.Diagnostics.Process[] myProcess = System.Diagnostics.Process.GetProcessesByName(PName);
    
                if (myProcess.Length > 1)
                {
                    MessageBox.Show("本程序一次只能运行一个实例!", "提示");
                    Application.Current.Shutdown();
                    return;
                }
    
                #endregion

    方法二、通过互斥属性查找同名的线程

    1)写在App.xaml里

    2)代码如下:

            private static System.Threading.Mutex mutex;
            //系统能够识别有名称的互斥,因此可以使用它禁止应用程序启动两次 
            //第二个参数可以设置为产品的名称:Application.ProductName 
            // 每次启动应用程序,都会验证名称为OnlyRun的互斥是否存在 
            protected override void OnStartup(StartupEventArgs e)
            {
                mutex = new System.Threading.Mutex(true, "OnlyRun");
                if (mutex.WaitOne(0, false))
                {
                    base.OnStartup(e);
                }
                else
                {
                    MessageBox.Show("程序已经在运行!", "提示");
                    this.Shutdown();
                }
            }

    WPF 设置程序只能开启唯一一个进程 不允许多开

    修改App.xaml.cs 代码 添加如下代码即可实现

    • private static System.Threading.Mutex IMutex;
    • protected override void OnStartup(StartupEventArgs e)
    • {
    • string MyAppID="OnlyRun_App";//运行进程互斥标识名称 可自行修改
    • IMutex= new System.Threading.Mutex(true, MyAppID);
    • if (IMutex.WaitOne(0, false))
    • {
    • ///正常启动程序
    • base.OnStartup(e);
    • }else{
    • MessageBox.Show("程序已经在运行!", "提示",MessageBoxButton.OK,MessageBoxImage.Asterisk);
    • this.Shutdown();//已存在运行进程 执行关闭
    • }
    • }
  • 相关阅读:
    python day05--字典
    python day14--内置函数二
    day12作业答案
    python day12 ——1.生成器2.生成器表达式 3.列表推导式
    python day11 ——1. 函数名的使⽤ 2. 闭包 3. 迭代器
    python day10作业答案
    python基础 :函数 装饰器,迭代器,面向过程编程
    python 基础:文件处理
    python 快速入门(变量,八大数据类型,if嵌套 ,for循环,while循环)
    计算机基础知识
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/15127799.html
Copyright © 2011-2022 走看看