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#程序只允许运行一个实例的几种方法详解

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

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

C#程序只允许运行一个实例的解决方案 Posted on 2010-03-15 16:29 Charles Chen 阅读(5068) 评论(13) 编辑 收藏      最近在做winform的...
  • lphbtm
  • lphbtm
  • 2016年08月10日 15:47
  • 1145

如何让Java程序只运行一个实例

Java没有提供这样的机制。从操作系统的观点来看,一个启动的Java Application仅仅是一 个JVM的运行实例。运行相同Application的两个实例,仅仅是运行两个无关的JVM。 只...
  • yaerfeng
  • yaerfeng
  • 2012年02月16日 15:20
  • 6741

让C#程序只运行一个实例,显示已经运行的界面

让程序只运行一个实例的方法一: static void Main()         {             System.Threading.Mutex mutex;             b...
  • pukuimin1226
  • pukuimin1226
  • 2012年07月12日 08:21
  • 2784

保证应用程序只有一个实例在运行——VS2008

让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果有说明已经有一个实例在运行了,则当前程序通知用户怎样怎样...
  • u011981018
  • u011981018
  • 2015年01月29日 16:43
  • 597

使Qt程序只运行一个实例

Normal 0 7.8 磅 0 2 false false false Microsof...
  • tingsking18
  • tingsking18
  • 2010年05月20日 08:48
  • 19028

C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)

多个程序只启动一次,如果再次启动该程序,则使其获得焦点,并显示在最前端。...
  • chaoyangzhixue
  • chaoyangzhixue
  • 2016年02月22日 09:25
  • 925

让MFC程序只运行一个实例

以对话框程序Demo为例:1、在CDemoApp类中添加成员变量: HANDLE m_hMutex;2、重载CWinApp::InitInstance 和 CWinApp::ExitInstance...
  • hxmcnu
  • hxmcnu
  • 2014年03月17日 18:31
  • 1290

Qt程序只运行一个实例

#include QSharedMemory shared("name");//随便填个名字就行 if (shared.attach()) {         return 0; } shared....
  • caoshangpa
  • caoshangpa
  • 2016年04月01日 15:03
  • 2071

Java 只运行一个实例

查了一下资料,Java 只运行一个实例的方法有下面三种: 1、占用端口(有效,但是有端口被挪用的缺陷) 2、检查文件是否存在(有效,但突然停机可能有问题) 3、使用JNI(有效,但丧失可移植性)...
  • huangng
  • huangng
  • 2017年07月02日 21:09
  • 143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中只运行一个实例的方法
举报原因:
原因补充:

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