C#中只运行一个实例的方法

    技术2022-05-11  83

    在Main函数之前添加如下代码,引入kernel32.dll里的函数:/// <summary>  /// 应用程序的主入口点。只运行一个实例  /// </summary>  [StructLayout(LayoutKind.Sequential)]      public   class   SECURITY_ATTRIBUTES       {      public   int   nLength;        public   int   lpSecurityDescriptor;        public   int   bInheritHandle;       }     [System.Runtime.InteropServices.DllImport("kernel32")]     private   static   extern   int   GetLastError();     [System.Runtime.InteropServices.DllImport("kernel32")]     private   static   extern   IntPtr   CreateMutex(SECURITY_ATTRIBUTES  lpMutexAttributes,bool

    bInitialOwner,string   lpName);       [System.Runtime.InteropServices.DllImport("kernel32")]     private   static   extern   int   ReleaseMutex(IntPtr   hMutex);       const   int   ERROR_ALREADY_EXISTS   =   0183;  

    然后在Main函数里调用如下://***********只运行一个实例*********************************************   IntPtr   hMutex;      hMutex = CreateMutex(null,false,"test");      if  ( GetLastError() != ERROR_ALREADY_EXISTS)      { 进行其它操作  }   else   {    //退出运行。因为已经有一个实例运行了。   } 


    最新回复(0)