C#如何判断我的程序已经有一个实例正在运行

 1     static class Program
 2     {
 3         private static Mutex mutex;
 4         /// <summary>
 5         /// 应用程序的主入口点。
 6         /// </summary>
 7         [STAThread]
 8         static void Main()
 9         {
10             Application.EnableVisualStyles();
11             Application.SetCompatibleTextRenderingDefault(false);
12             mutex = new Mutex(true, "OnlyRun");
13             if (mutex.WaitOne(0, false))
14             {
15                 Application.Run(new Form1());
16             }
17             else
18             {
19                 MessageBox.Show("程序已经运行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
20                 Application.Exit();
21             }
22         }
23     }

使用Mutex互斥体技术。

这两句

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false);

可以去掉...但是...

去掉第一句...你的程序就不能使用Windows的主题和样式,在XP和Vista中会很难看...

去掉第二句...你的程序不使用GDI+,UI渲染会慢一些,可以与.NET 1.x程序媲美...

时间: 2024-08-06 07:57:15

C#如何判断我的程序已经有一个实例正在运行的相关文章

程序只启动一个实例的几种方法

我们在使用<金山词霸>时发现,在<金山词霸>已经运行了的情况下,再次点击<金山词霸>的图标,那么它不会再运行另外一个<金山词霸>,而是将已有的<金山词霸>给激活,始终只能运行一个<金山词霸>的实例. 在我们的程序当中如果要实现类似<金山词霸>的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例.  对于第一个问题,我们可以通过设置命名互斥对象或命名信

Winform and WPF 第二遍双击快捷方式或应用程序打开原来的应用程序而不新建一个实例[进程通信 1]

private void Window_Loaded(object sender, RoutedEventArgs e)         {             Process[] pro = Process.GetProcesses();             int n = pro.Where(p => p.ProcessName.Equals("进程名称")).Count();             if (n > 1)             {      

让程序只启动一个实例

在应用程序的InitInstance方法中,添加如下几行代码: CreateMutex(NULL,true,m_pszAppName); if(GetLastError() == ERROR_ALREADY_EXISTS) { AfxMessageBox(_T("程序已启动"),MB_OK | MB_APPLMODAL | MB_ICONSTOP); return false; }

让程序最多只能有一个实例在运行(文件独占)

通过文件独占的方式,我们打开指定的文件后,用 lockf 对文件加锁,结束程序时解锁文件. 下面代码中我们将当前程序的 PID 写入文件. int writePidFile(const char *pidFile) { char str[32]; int fd = open(pidFile, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); if (fd < 0) { printf("Can't open pidFile %s.\n&quo

[VC]在VC++中实现让程序只运行一个实例的方法且实现该实例

方法一: 有时候在开发应用程序时,希望控制程序运行唯一的实例.例如,最常用的mp3播放软 件Winamp,由于它需要独占计算机中的音频设备,因此该程序只允许自身运行唯一的一个例程.在Visual C++的开发实践中,对于16位的Windows系统,应用程序的hPrevInstance句柄保存了应用程序上一个运行的实例,可以用该值来检查是否 有实例运行:然而在32位Windows系统下,这个值总是NULL,所以无法利用该值来实现程序运行唯一实例.本实例给出了解决这个问题的简单办法,只 要将程序中稍

[C#]只能运行程序的一个实例

C#实现只能运行程序的一个实例(添加在窗体的Load事件中) 1. 根据进行名限制只能运行程序的一个实例 System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess(); System.Diagnostics.Process[] processList = System.Diagnostics.Process.GetProcessesByName(process.ProcessName); 

C# WinForm 判断程序是否已经在运行,且只允许运行一个实例

static class Program {   /// <summary>   /// 应用程序的主入口点.   /// </summary>   [STAThread]   static void Main()   {     Application.EnableVisualStyles();     Application.SetCompatibleTextRenderingDefault(false);     //1.这里判定是否已经有实例在运行     //只运行一个实

C#让应用程序只运行一个实例的几种方法

一 判断是否有相同的实例已经运行 1 根据“Mutex”判断是否有相同的实例在运行 /// <returns>已有实例运行返回true,否则为false</returns>public bool IsRunningProcessByMutex(){     bool createNew;     using (System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName

使程序只运行一个实例

//APP 里面 //1.// 此程序只能运行一次,用互斥量来判断程序是否已运行 1 HANDLE m_hMutex=CreateMutex(nullptr,TRUE, m_pszAppName); 2 if(GetLastError()==ERROR_ALREADY_EXISTS) { return FALSE; } //2. 1 HWND hWnd = FindWindow(nullptr, m_pszAppName/*_T("MyDlg")*/); //第一个参数: 窗口的类名