同一目录的程序,同时只能运行一个

* 2024-12-01 07:05:06
最佳回答
有时候需要只允许程序只能同时运行一个实例。实现方式有很多。一. 进程互斥原理:通过获取系统进程列表,如果发现有重名的,则表示程序已经运行了,此时新运行的进程就退出;实现:system.diagnostics.process类的静态方法getprocesse**yname(string processname)process[] ps = process.getprocesse**yname(guo.exe);if(ps !=**&& ps.length1){//发现重复进程}写在main方法里;判断length大于1,是因为本身启动之后也在进程列表里了,第一次启动的时候length==1;优点:代码简单;缺点:会把别的重名程序误认为是自己(如很多软件都有update.exe);可以通过复制多个exe并起不同名字来达到运行多个实例的目的;二. 共享锁(文件、注册表)原理:运行程序时,在一个公共的位置创建一个共享值(如在固定目录创建一个文件,或者在固定的注册表位置创建一个值),退出程序时删除该值。若运行时发现值已经在,则表示程序已经在运行,此时新运行的进程就退出;实现:略;优点:逻辑好理解;缺点:若程序没有正常退出,共享值没有被删除,会导致程序无法再启动;三. 线程互斥原理:通过一个唯一标识创建进程互斥体,启动时判断互斥体是否已经存在,若存在则表示是重复进程;实现:使用system.threading.mutexusingsystem;usingsystem.collections.generic;usingsystem.text;usingsystem.diagnostics;usingsystem.reflection;usingsystem.runtime.interopservices;namespaceconsoleapplication1{classprogram{///<summary///需要定义为类变量,而非局部变量///</summarystaticsystem.threading.mutex _mutex;staticvoidmain(string[] args){//是否可以打开新进程boolcreatenew;//获取程序集guid作为唯一标识attribute guid_attr = attribute.getcustomattribute(assembly.getexecutingassembly(),typeof(guidattribute));stringguid =((guidattribute)guid_attr).value;_mutex=newsystem.threading.mutex(true, guid,outcreatenew);if(false==createnew){//发现重复进程}_mutex.releasemutex();}}}优点:真正能做到同一个程序只允许运行一个进程。 20210311
汇率兑换计算器

类似问答
  • 腾讯体育会员一个号能同时多人登录吗?
    • 2024-12-01 01:28:31
    • 提问者: 未知
    一个号只能一个人用,不同时间只要不一起登录可以多个人用,但是这违反用户协议腾讯 - **互联网公司深圳市腾讯计算机系统有限公司成立于1998年11月,由马化腾、张志东、许晨晔、陈一丹、曾李青五位创始人共同创立。 是**最大的互联网综合服务提供商之一,也是**服务用户最多的互联网企业之一。腾讯多元化的服务包括:社交和通信服务qq及微信/wechat、社交网络**qq空间、腾讯游戏旗下qq游戏**、门...
  • 同一个银行现在,只能办一张**吗
    • 2024-12-01 22:40:33
    • 提问者: 未知
    一个银行办卡。在2016年之个人在同银行,通常可以办理最多10张**,后来打击电信**,监管层下发了一个通知:原则上每人同一银行限开4张卡。到了2016年12月1日,银行账户开始实施三类账户(i类、ii类、iii类)分类管理,当时规定,同一个人,在同一家银行只能开设一个i类账户。也就是说,如果你先前办的卡是你的首张该行卡,那么,它就是你在该行的唯一i类账户。此时你再去办该行卡,只能是ii类或iii...
  • 不是说一个cpu只能同时运行一个进程吗?这里怎么这么多?
    • 2024-12-01 21:57:04
    • 提问者: 未知
    多任务,每个任务都会得到一个cpu时间,cpu就对它处理。举个例子:你一个人单挑100个人,你要么就一个打完打下一个。要么就是你一个人“同时”打100个人。当你速度足够快时,你瞬闪到每个人面前打一拳,有的人还被你打了3-4拳,瞬间3轮过后,100个人倒下了。在普通人面前,就觉得你同时击倒了100人。但其实说严格点,你还是一个一个击倒的。
  • 东方财富一个手机同时登录两个账号会涉及到司法程序吗?
    • 2024-12-01 03:43:45
    • 提问者: 未知
    您好于你的题,我很高兴能为你提供帮我之前也遇到过哟,以下是我的个法望能帮助到你,若有错误,还望见谅!。东方财富你自己注册,绑定了**手机号**,让别人用存在很大的风险,这是**不允许的。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
  • 期货市场同一时期同一产品只上市一次吗?
    • 2024-12-01 09:55:42
    • 提问者: 未知
    有一点明白你的意思了,期货买卖的是远期合约,过了交割月份,合约就不存在了,相应会出现新的远期合约。至于你说的 豆一1003,不可以说它上市了还会再上市吗,既然有了这个合约,在交割月份前它会一直存在,不过它的持仓是不断发生变化的,临近交割了,持仓量不断减少,最后为零就没了
  • 同一个人同一**不同省份今天转账什么时候能到帐?
    • 2024-12-01 11:58:20
    • 提问者: 未知
    从2016年12月1日起,客户通过atm自助柜员机的转账业务,除向本人在银行账户转账外,均在受理24小时后办理资金转账。转出账户为某行卡的,在受理24小时之内,客户可以通过柜面或拨打客服电话向银行申请撤销转账。银行转账的方式: 在确定收款人提供的存折帐号、户名无误的话,拿现金到银行直接存入收款人帐号就可以了;建议在银行开一个帐户,然后填一份电汇单,填写清楚对方的收款帐号、户名、开户行名称,从帐户上...
  • 带环前一个小时能**吗
    • 2024-12-01 21:28:56
    • 提问者: 未知
    病情分析: 您好,如果要上节育环的话,需要月经干净后3到7天,而且上节育环前三天内不能**。指导意见: 上节育环以后,可能会有**流血,可以服用葆宫止血颗粒。半个月内不能**。
  • 同一个银行现在,只能办一张**吗
    • 2024-12-01 04:14:15
    • 提问者: 未知
    一个银行可多张卡。在2016前,个人在同一家银通常可以办理最多10张储,后来为了打击电信**,监管层下发了一个通知:原则上每人同一银行限开4张卡。到了2016年12月1日,银行账户开始实施三类账户(i类、ii类、iii类)分类管理,当时规定,同一个人,一家银行只能开设一个i类账户。也就是说,如果你先前办的卡是你的首张该行卡,那么,它就是你在该行的唯一i类账户。此时你再去办该行卡,只能是ii类或ii...
  • 相同股东的两家公司能否对同一个项目进行投标?
    • 2024-12-01 04:40:45
    • 提问者: 未知
    不可以。《中华人民共和国招标投标法实施条例》对其有相应的规定: 第三十四条 与招标人存在利害关系可能影响招标公正性的法人、其他组织或者个人,不得参加投标。单位负责人为同一人或者存在...
  • 一个**号 不能同时注册运满满货主和运满满司机吗
    • 2024-12-01 18:49:41
    • 提问者: 未知
    应该不行,因为运满满本身是一个**,一方是货主...运满满是一款新上市的专业物流手机软件。产品主要功能-寻找车源信息、货源信息、发布车源信息、发布货源信息。
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。