关闭

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

726人阅读 评论(0) 收藏 举报

在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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:36372次
    • 积分:545
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:13篇
    • 译文:0篇
    • 评论:7条
    最新评论