日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

只运行一个实例的写法

發(fā)布時(shí)間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 只运行一个实例的写法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有時(shí)我們需要只允許運(yùn)行應(yīng)用程序的一個(gè)實(shí)例,當(dāng)進(jìn)程啟動(dòng)時(shí),如果發(fā)現(xiàn)應(yīng)用程序的一個(gè)實(shí)例在運(yùn)行,就自動(dòng)停止運(yùn)行我們通常通過Mutex互斥體在Main函數(shù)中實(shí)現(xiàn),通常的寫法是:

[STAThread]
static void Main()
{
bool createNew;
using (System.Threading.Mutex m = new System.Threading.Mutex(true, Application.ProductName, out createNew))
{
if (createNew)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else
{
MessageBox.Show("Only one instance of this application is allowed!");
}
}
}

我們?cè)趯ふ掖鸢笗r(shí),往往來去匆匆,根本不去理會(huì)Mutex的特性和注意事項(xiàng)經(jīng)過簡單的測試,OK,拿來就用此時(shí)我們忽略了一個(gè)重要的前提條件:Mutex的命名規(guī)則。以上的寫法在單用戶下運(yùn)行沒有問題;在多用戶下,每個(gè)用戶都能啟動(dòng)一個(gè)實(shí)例,也就不能保證單實(shí)例運(yùn)行了

如果需要在終端機(jī)服務(wù)器上使用,并且只允許一個(gè)實(shí)例的話,請(qǐng)使用下面的寫法:

[STAThread]
static void Main()
{
bool createNew;
try
{
using (System.Threading.Mutex m = new System.Threading.Mutex(true, "Global\\" + Application.ProductName, out createNew))
{
if (createNew)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else
{
MessageBox.Show("Only one instance of this application is allowed!");
}
}
}
catch
{
MessageBox.Show("Only one instance of this application is allowed!");
}
}

以下是MSDN的說明:

在運(yùn)行終端服務(wù)的服務(wù)器上,已命名的系統(tǒng) mutex 可以具有兩級(jí)可見性如果名稱以前綴“Global\”開頭,則 mutex 在所有終端服務(wù)器會(huì)話中均為可見。如果名稱以前綴“Local\”開頭,則 mutex 僅在創(chuàng)建它的終端服務(wù)器會(huì)話中可見。在這種情況下,服務(wù)器上各個(gè)其他終端服務(wù)器會(huì)話中都可以擁有一個(gè)名稱相同的獨(dú)立 mutex如果創(chuàng)建已命名 mutex 時(shí)不指定前綴,則它將采用前綴“Local\”。在終端服務(wù)器會(huì)話中,只是名稱前綴不同的兩個(gè) mutex 是獨(dú)立的 mutex,這兩個(gè) mutex 對(duì)于終端服務(wù)器會(huì)話中的所有進(jìn)程均為可見即:前綴名稱“Global\”和“Local\”說明 mutex名稱相對(duì)于終端服務(wù)器會(huì)話(而并非相對(duì)于進(jìn)程)的范圍

轉(zhuǎn)載于:https://www.cnblogs.com/lzxianren/archive/2013/06/16/3138507.html

總結(jié)

以上是生活随笔為你收集整理的只运行一个实例的写法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。