C#实现让程序只能打开一个实例(总结3方法)

本文总结了使用C#语言确保应用程序只能打开一个实例的三种常见方法,涵盖了进程检查、Mutex同步以及NamedPipe通信等技术,旨在帮助开发者实现更稳定的单实例程序控制。
部署运行你感兴趣的模型镜像

C#实现让程序只能打开一个实例(总结3方法)

用c#开发应用程序.有时候只需要让程序打开后不能被再次打开..只能打开一次... V  o; J: j5 t  H7 L- g
总结出有3个方法可实现..如果还有什么好的方法请大家一起来讨论下..( _9 {, z6 n2 [, c
复制内容到剪贴板代码:; O( G  H4 D/ i
                        //=====创建互斥体法:=====
/ ?9 H; f2 f; C" w" h- ^9 H; ^  s            //bool blnIsRunning;
3 L) c# P8 Z/ i4 k, b) B# e/ ~! /            //Mutex mutexApp = new Mutex(false, Assembly.GetExecutingAssembly().FullName, out   blnIsRunning);% C0 ~# {7 X% N, S; o5 U3 [
            //if (!blnIsRunning)4 F( i7 e! r1 k! @
            //{
% }5 N: y& q" r/ Q! B- n1 p            //    MessageBox.Show("程序已经运行!", "提示",) g) m/ ?% R; `$ F0 A
            //    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);5 S# D. x1 H$ {( a, W( n
            //    return;
8 x& I2 e" Q9 f; Q) K            //}   
% K# u9 U  i; F$ y2 ]& v7 |. q3 [2 H复制内容到剪贴板代码:* y5 t, x* f7 z& v# h
                        //保证同时只有一个客户端在运行   
/ ~) q) Y( _+ F2 ^3 x1 z* b            //System.Threading.Mutex mutexMyapplication = new System.Threading.Mutex(false, "OnePorcess.exe");
. m) W: U7 ^1 ^; v            //if (!mutexMyapplication.WaitOne(100, false))6 K4 e/ e  ]9 P% i; U6 j: w- ~$ @1 R
            //{
9 A9 b6 o( T& Z9 a0 X            //    MessageBox.Show("程序" + Application.ProductName + "已经运行!", Application.ProductName,9 p/ `$ J5 p- O& X  /
            //    MessageBoxButtons.OK, MessageBoxIcon.Error);5 Q0 X! ^% ~; u, U) N8 ?
            //    return;
/ Q) i, K) W* K1 s1 Z# z            //}
; q. v: `( d2 o' ?: c复制内容到剪贴板代码:: [! V+ h0 E3 `2 H' z; m
//=====判断进程法:(修改程序名字后依然能执行)=====
: [& x' {3 U8 Y            //Process current = Process.GetCurrentProcess();
5 m# t" G2 ]9 j$ {% @( B! h  T2 G            //Process[] processes = Process.GetProcessesByName(current.ProcessName);8 e0 B0 P4 y" R6 m* ]
            //foreach (Process process in processes)& k; ~' P) A. f1 ]7 p
            //{
: F& O7 B7 B; c) H8 W0 n            //    if (process.Id != current.Id)1 h# G, c0 s, D& E9 V  t
            //    {
, W6 o- T5 Q2 A5 f0 v            //        if (process.MainModule.FileName
9 Z( _% D" R! _! Y, I            //        == current.MainModule.FileName)/ k) ?& E8 c( H/ L! O
            //        {/ k1 E- F) x8 B* ^  `
            //            MessageBox.Show("程序已经运行!", Application.ProductName,0 a) [2 ~! J+ D5 _: G. H: q7 H
            //            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
0 r- J2 ?( U% b" d3 u4 M5 `: x            //            return;
( |7 Y# ^0 o0 C2 B7 P* @6 G+ g1 C, h            //        }
# c4 I$ y! H& L7 H6 N            //    }; @* i8 ?5 u8 y) l) N& d5 L
            //}     
$ c( w3 Y# G! ]: J1 o只需要把需要的方法代码放在Void Main()方法中就可以实现..

您可能感兴趣的与本文相关的镜像

GPT-SoVITS

GPT-SoVITS

AI应用

GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值