C# Winform程序?qū)崿F(xiàn)防止多開(kāi)的方法總結(jié)【親測(cè)】
本文實(shí)例講述了C# Winform程序?qū)崿F(xiàn)防止多開(kāi)的方法。分享給大家供大家參考,具體如下:
1、Winform啟動(dòng)的時(shí)候,檢測(cè)是否存在同樣的進(jìn)程名,防止程序多開(kāi);
static class Program
{
/// <summary>
/// 應(yīng)用程序的主入口點(diǎn)。
/// </summary>
[STAThread]
static void Main()
{
Process[] processes = Process.GetProcesses();
Process currentProcess = Process.GetCurrentProcess();
bool processExist = false;
foreach (Process p in processes)
{
if (p.ProcessName == currentProcess.ProcessName && p.Id != currentProcess.Id)
{
processExist = true;
}
}
if (processExist)
{
Application.Exit();
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
static class Program
{
/// <summary>
/// 應(yīng)用程序的主入口點(diǎn)。
/// </summary>
[STAThread]
static void Main()
{
string processName = Process.GetCurrentProcess().ProcessName;
Process[] processes = Process.GetProcessesByName(processName);
//如果該數(shù)組長(zhǎng)度大于1,說(shuō)明多次運(yùn)行
if (processes.Length > 1)
{
MessageBox.Show("程序已運(yùn)行,不能再次打開(kāi)!");
Environment.Exit(1);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
2、利用Mutex互斥對(duì)象防止程序多開(kāi);
static class Program
{
/// <summary>
/// 應(yīng)用程序的主入口點(diǎn)。
/// </summary>
[STAThread]
static void Main()
{
bool isAppRunning = false;
Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRunning);
if (!isAppRunning)
{
MessageBox.Show("程序已運(yùn)行,不能再次打開(kāi)!");
Environment.Exit(1);
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《C#程序設(shè)計(jì)之線程使用技巧總結(jié)》、《WinForm控件用法總結(jié)》、《C#中XML文件操作技巧匯總》、《C#常見(jiàn)控件用法教程》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#數(shù)組操作技巧總結(jié)》及《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》
希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。
- C# winform打印excel的方法
- C# winform中窗口關(guān)閉按鈕的隱藏與禁用詳解
- C# WinForm-Timer控件的使用
- C# Winform實(shí)現(xiàn)波浪滾動(dòng)效果
- C# WinForm調(diào)用Shell_NotifyIcon的示例代碼
- C# Winform按鈕中圖片實(shí)現(xiàn)左圖右字的效果實(shí)例
- C# Winform中如何繪制動(dòng)畫(huà)示例詳解
- C# Winform調(diào)用百度接口實(shí)現(xiàn)人臉識(shí)別教程(附源碼)
- c# winform異步不卡界面的實(shí)現(xiàn)方法
- c# winform 解決PictureBox 無(wú)法打印全部圖片的問(wèn)題
相關(guān)文章
C#使用stackalloc分配堆棧內(nèi)存和非托管類(lèi)型詳解
這篇文章主要為大家介紹了C#使用stackalloc分配堆棧內(nèi)存和非托管類(lèi)型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2022-12-12
用Newtonsoft將json串轉(zhuǎn)為對(duì)象的方法(詳解)
下面小編就為大家?guī)?lái)一篇用Newtonsoft將json串轉(zhuǎn)為對(duì)象的方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04
C#實(shí)現(xiàn)將應(yīng)用程序設(shè)置為開(kāi)機(jī)啟動(dòng)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將應(yīng)用程序設(shè)置為開(kāi)機(jī)啟動(dòng)的方法,涉及C#針對(duì)注冊(cè)表的寫(xiě)入技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
Unity3D實(shí)現(xiàn)控制攝像機(jī)移動(dòng)
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)控制攝像機(jī)移動(dòng) ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
C#實(shí)現(xiàn)簡(jiǎn)單的汽車(chē)租賃系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)汽車(chē)租賃系統(tǒng)的具體實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
時(shí)間字符串轉(zhuǎn)換成日期對(duì)象datetime的方法
在遇到形如"2012-12-19T17:00:00Z"這樣的時(shí)間字符串時(shí),怎樣轉(zhuǎn)換到DateTime類(lèi)型呢,下面的方法可以解決2013-12-12
Unity使用DoTween實(shí)現(xiàn)拋物線效果
這篇文章主要為大家詳細(xì)介紹了Unity使用DoTween實(shí)現(xiàn)拋物線效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
C#使用Stopwatch實(shí)現(xiàn)計(jì)時(shí)功能
在 C# 中,Stopwatch 類(lèi)是用于測(cè)量經(jīng)過(guò)的時(shí)間的工具類(lèi),提供了高精度的計(jì)時(shí)功能,本文主要介紹了C#如何使用Stopwatch實(shí)現(xiàn)計(jì)時(shí)功能,需要的可以參考下2024-03-03

