使用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)文章
C#中使用HttpPost調(diào)用WebService的方法
這篇文章介紹了C#中使用HttpPost調(diào)用WebService的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03C#使用OpenCV剪切圖片中的人物頭像的實(shí)現(xiàn)方法
這篇文章主要介紹了C#使用OpenCV剪切圖片中的人物頭像,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能
這篇文章主要介紹了基于C#技術(shù)實(shí)現(xiàn)身份證識(shí)別功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07C#實(shí)現(xiàn)3步手動(dòng)建DataGridView的方法
這篇文章主要介紹了C#實(shí)現(xiàn)3步手動(dòng)建DataGridView的方法,實(shí)例分析了C#實(shí)現(xiàn)手動(dòng)創(chuàng)建DataGridView的原理與技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09WinForm開(kāi)發(fā)中屏蔽WebBrowser腳本錯(cuò)誤提示的方法
這篇文章主要介紹了WinForm開(kāi)發(fā)中屏蔽WebBrowser腳本錯(cuò)誤提示的方法,在C#項(xiàng)目開(kāi)發(fā)中比較實(shí)用,需要的朋友可以參考下2014-08-08C# 如何調(diào)用C++ dll string類型返回
這篇文章主要介紹了C# 如何調(diào)用C++ dll string類型返回問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11