使用mutex實(shí)現(xiàn)應(yīng)用程序單實(shí)例運(yùn)行代碼分享
System.Threading.Mutex :同步基元,它只向一個(gè)線程授予對(duì)共享資源的獨(dú)占訪問(wèn)權(quán)。
實(shí)現(xiàn)原理: 在程序啟動(dòng)時(shí),請(qǐng)求一個(gè)互斥體,如果能獲取對(duì)指定互斥的訪問(wèn)權(quán),就繼續(xù)運(yùn)行程序,否則就退出程序。
測(cè)試代碼:
class Test
{
/// <summary>
/// 應(yīng)用程序的主入口點(diǎn)。
/// </summary>
[STAThread]
static void Main(string[] args)
{
bool flag=false;
System.Threading.Mutex mutex=new System.Threading.Mutex(true,"Test",out flag);
//第一個(gè)參數(shù):true--給調(diào)用線程賦予互斥體的初始所屬權(quán)
//第一個(gè)參數(shù):互斥體的名稱
//第三個(gè)參數(shù):返回值,如果調(diào)用線程已被授予互斥體的初始所屬權(quán),則返回true
if(flag)
{
Console.Write("Running");
}
else
{
Console.Write("Another is Running");
System.Threading.Thread.Sleep(5000);//線程掛起5秒鐘
Environment.Exit(1);//退出程序
}
Console.ReadLine();
}
運(yùn)行結(jié)果:
第一次運(yùn)行,輸出"Running"。
不關(guān)閉第一次運(yùn)行的程序, 進(jìn)行第二次運(yùn)行,輸出"Another is Running",五秒鐘后,程序自動(dòng)退出。
相關(guān)文章
Unity3D實(shí)現(xiàn)控制攝像機(jī)移動(dòng)
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)控制攝像機(jī)移動(dòng) ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
DevExpress GridView自動(dòng)滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了DevExpress GridView自動(dòng)滾動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
C#獲取客戶端相關(guān)信息實(shí)例總結(jié)
這篇文章主要介紹了C#獲取客戶端相關(guān)信息的方法,以實(shí)例形式總結(jié)了C#獲取客戶端IP地址、網(wǎng)絡(luò)連接、硬件信息等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
C#反射在實(shí)際應(yīng)用中的實(shí)例代碼
C#反射在實(shí)際應(yīng)用中的實(shí)例代碼,需要的朋友可以參考一下2013-03-03
用C#在本地創(chuàng)建一個(gè)Windows帳戶(DOS命令)
用C#在本地創(chuàng)建一個(gè)Windows帳戶(DOS命令)...2007-03-03
C#中Dictionary與List的用法區(qū)別以及聯(lián)系詳解
List和Dictionary想必是我們平常用到最多的C#容器了,他們使用起來(lái)都很簡(jiǎn)單,這篇文章主要給大家介紹了關(guān)于C#中Dictionary與List的用法區(qū)別以及聯(lián)系的相關(guān)資料,需要的朋友可以參考下2023-11-11
詳解搭建基于C#和Appium的Android自動(dòng)測(cè)試環(huán)境
如果想做手機(jī)端的自動(dòng)化測(cè)試,Appium是首選的測(cè)試框架,因?yàn)榫W(wǎng)上使用的人多,資料豐富,支持語(yǔ)言多Jave,Python,C#,Ruby,PHP,碰見(jiàn)問(wèn)題也容易得到幫助。2021-05-05
Winform讓DataGridView左側(cè)顯示圖片
本文主要介紹在如何讓DataGridView左側(cè)顯示圖片,這里主要講解重寫(xiě)DataGridView的OnRowPostPaint方法,需要的朋友可以參考下。2016-05-05

