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

