WinForm C net防止一個程式 WinForm 重複執行的方法
阿新 • • 發佈:2018-12-20
最近比較忙,郵件預警系統暫停了沒時間去處理,臨時處理:直接執行exe檔案!
可是問題來了:
我點選了兩次,原來幾乎在同時執行這個程序,我在程式中有執行緒時間睡眠2秒一次等待佇列,開啟程序果然兩個MAIL.EXE程序,就想在執行前做一個判斷阻止重複執行!
//在寫一些服務型的軟體的時候,你可能不希望一個作業系統裡有兩個副本在執行,這樣也許會擾亂你的操作。這時,你就需要限制程式的副本。下面的這個方法,很簡單的就可以實現上述功能。using System;using System.Collections.Generic;using System.Windows.Forms;using System.Diagnostics;namespace TestProcessCount{ static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { int processCount = 0; Process[] pa = Process.GetProcesses();//獲取當前程序陣列。 foreach (Process PTest in pa) { if (PTest.ProcessName == Process.GetCurrentProcess().ProcessName) { processCount += 1; } } if (processCount > 1) { //如果程式已經執行,則給出提示。並退出本程序。 DialogResult dr; dr = MessageBox.Show( Process.GetCurrentProcess().ProcessName+"程式已經在執行!" , "退出程式", MessageBoxButtons.OK, MessageBoxIcon.Error);//可能你不需要彈出視窗,在這裡可以遮蔽掉 return; //Exit; } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmBrowser()); } }}
通常會把提示資訊禁止掉。一般做任務預警是在後臺自動執行。。