歡迎跟我連絡

本頁最下方有Web MSN可以直接跟我交談喔!
免安裝程式...哈哈 歡迎聊天

2008年8月19日 星期二

如何讓你的程式只能啟動一次 in C#

有時候,因為某些緣故(例如:搶同一個TCP/IP Port Listen),同一隻程式不可以啟動兩次(含)以上...
可以這樣處理,打開Program.cs

加入以下程式碼(粗體自部分),就OK了
static class Program
{
///


/// The main entry point for the application.
///

static Mutex appMutex;

[STAThread]
static void Main()
{
bool createNew;
appMutex = new Mutex(true, "xxxxx", out createNew); // xxxxx 是自己取的名稱
if (!createNew)
{ // 表示已經有同名的 Mutex
appMutex.Close();
appMutex = null;
MessageBox.Show("Another xxxxxx already Startup !","Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}

Application.ApplicationExit += OnApplicationExit;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormMain());
}

static void OnApplicationExit(object sender, EventArgs e)
{
if (appMutex != null)
{
appMutex.ReleaseMutex();
appMutex.Close();
}
}

}

或是在Form Load Event中這樣寫

using System.Threading;
....

private void FormMain_Load(object sender, EventArgs e)
{
bool IsExist;
Mutex MyMutex = new Mutex(true, "MyApplication", out IsExist);
//其中MyApplicationd可以是任意字眼...
if(IsExist)
{
Dispose();//關閉
}
}


0 個回應:

MSN狀態(我在線上時,可以跟我交談喔)