1. 程式人生 > >WinForm C net防止一個程式 WinForm 重複執行的方法

WinForm C net防止一個程式 WinForm 重複執行的方法

               

最近比較忙,郵件預警系統暫停了沒時間去處理,臨時處理:直接執行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());        }    }}

通常會把提示資訊禁止掉。一般做任務預警是在後臺自動執行。。