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

原创 2007年09月29日 09:25:00

在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
   {
    //退出运行。因为已经有一个实例运行了。
   } 

相关文章推荐

使用C#实现只允许运行一个程序实例的几种方法

本文和大家讲一下如何使用C#来创建系统中只能有该程序的一个实例运行。要实现程序的互斥,通常有下面几种方式,下面用 C# 语言来实现:方法一:     使用线程互斥变量. 通过定义互斥变量来判断是否已运...

解决C#程序只允许运行一个实例的几种方法详解

方法一:使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例. 把program.cs文件里的Main()函数改为如下代码:using System; using System.Windows.F...

C#只能运行一个实例程序的方法

互斥进程(程序), 简单点说,就是在系统中只能有该程序的一个实例运行. 现在很多软件都有这功能,如Maxthon 可以设置为"只允许打开一个窗体",还有Bitcomet等. 我也是看到这些软件的这个功...

c# Winform只能运行一个实例源码

  • 2012年06月01日 14:52
  • 2KB
  • 下载

C# WinForm 只能运行一个实例

  • 2011年02月25日 11:04
  • 39KB
  • 下载

C#程序只允许运行一个实例的解决方案

最近在做winform的程序中,需要只能打开一个程序,如果已经存在,则激活该程序的窗口,并显示在最前端。在网上google了一哈,找到了很多的解决方案。这里我整理了3种方案,并经过了测试,现和朋友们分...
  • ybhjx
  • ybhjx
  • 2016年12月17日 13:58
  • 269

C#只运行一个实例

  • 2013年01月18日 23:48
  • 604B
  • 下载

C# 只运行一个实例

  • 2008年11月19日 14:41
  • 26KB
  • 下载

C#利用Mutex互斥量实现同时只有一个进程实例在运行

我们在做程序时,有时候希望在一台电脑上面只有一个进程实例在运行,利用Mutex互斥量可以实现了这个功能,方法及步骤如下:关于互斥量Mutex的理解及用法可以参考博客http://blog.csdn.n...

C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper

前言在开发应用程序时,通常只让程序运行一个实例。所以,就要判断程序是否已经运行。下面是我自己在项目中使用到,封装好的帮助类。有 普通的 C# 应用程序 和 Windows CE 和 Windows M...
  • SeayXu
  • SeayXu
  • 2016年08月25日 16:06
  • 356
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中只运行一个实例的方法
举报原因:
原因补充:

(最多只允许输入30个字)