• 保证应用程序只运行一个实例[c#]


    使用 互斥Mutex 保证应用程序只运行一个实例, 代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    using System.Threading;
    using System.Runtime.InteropServices;
    
    namespace TestPlatform
    {
        static class Program
        {
            private static Mutex _mutex = null;
            private static string _mutexName = "ONLYONE_APP";
            private static string _titleName = "Gps设备生产测试平台";
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                // 单一实例
                try
                {
                    _mutex = Mutex.OpenExisting(_mutexName);
                    MessageBox.Show(_titleName + "已经运行, 请确认!", "不可重复执行", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    
                    IntPtr _handle = FindWindow(null, _titleName);
                    if (_handle != IntPtr.Zero)
                    {
                        //MessageBox.Show("find application.");
                        ShowWindow(_handle, SW_RESTORE);// 还原
                    }
                    Application.Exit();
                }
                catch (WaitHandleCannotBeOpenedException ex) // 不存在此 mutex
                {
                    _mutex = new Mutex(true, _mutexName);
    
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new FormMain());
    
                    _mutex.ReleaseMutex();
                }
            }
    
            [DllImport("user32.dll")]
            private static extern IntPtr FindWindow(string className, string windowName);
    
            [DllImport("user32.dll")]
            private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
    
            private const int SW_RESTORE = 9;
        }
    }
    ~做事情贵在坚持~
  • 相关阅读:
    Flask-1-03-HelloWorld
    Flask-1-02-安装环境
    Flask-1-01-初识Flask
    Ubuntu解决virtualbox 安装增强包的报错
    ubuntu安装软件has install-snap change in progress错误
    virtualbox
    Nginx 403 Forbidden错误的解决方法
    处理Redis报错:redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snap
    在Ubuntu18.04上安装MySQL
    Python3 错误、调试和测试
  • 原文地址:https://www.cnblogs.com/csMapx/p/2892635.html
Copyright © 2020-2023  润新知