我介绍两个主流的方法。

方法一:使用Mutex来进行

1. 首先要添加如下的namespace:

using System.Threading;

2. 修改系统Main函数,大致如下:

bool bCreatedNew;

//Create a new mutex using specific mutex name

Mutex m =new Mutex( false, "myUniqueName", out bCreatedNew );

if( bCreatedNew )

Application.Run(new yourFormName());

如上面编码就可以了,要注意的一点是,在给Mutex起名字的时候,不要太简单,以tb防止和其他程序的Mutex重复,从而达不到所预想的效果。

方法二:使用Process来进行

1. 首先要添加如下的namespace:

using System.Diagnostics;

using System.Reflection;

2. 添加如下函数:

public static Process RunningInstance()

{

Process current = Process.GetCurrentProcess();

Process[] processes = Process.GetProcessesByName(current.ProcessName);

//Loop through the running processes in with the same name

foreach (Process process in processes)

{

//Ignore the current process

if (process.Id != current.Id)

{

//Make sure that the process is running from the exe file.

if (Assembly.GetExecutingAssembly().Location.Replace("/", "//") == current.MainModule.FileName)

{

//Return the other process instance.

return process;

}

}

}

//No other instance was found, return null.

return null;

}

3. 修改系统Main函数,大致如下:

if( RunningInstance() == null )

Application.Run(new yourFormName());

如上面编码就可以了,要注意的一点是,在判断进程模块文件名是否相等这部分的代码,是可选的。如果当前的程序在文件系统中只存在一个的话,以上的方法是可以的;否则不要删除这部分的代码。

对比两种方法,就效率和简便性来说,前一种方法是最好的,也是我比较喜欢的;后一种方法,速度比较慢,其次通过ProcessName去系统中查寻,有可能查出来的Process并不是我想要得,虽说在后面加了文件目录判断,但是其含有潜在的问题(前面已经说出来)。不过,第一种方法也有缺陷,就是扩展性操作不方便,例如:让程序只运行一次,如果程序已经运行,把它弹出并显示到最前面。对于此,后一种方法就很有优势了。

posted on 2012-07-05 13:25 chen11-1 阅读(722) 评论(0)  编辑  收藏

java同一程序只运行一次_如何使自己的程序只运行一次相关推荐

  1. 小程序执行运行过程原理_活性污泥法基本原理、净化反应过程、工艺类型和运行过程中存在的问题...

    ↑ 点击上方"表面活性剂平台"关注我们 活性污泥法实质上是天然水体自净作用的人工强化,能从污水中去除溶解态和胶体态的可生物降解有机物以及能被活性污泥吸附的悬浮固体和其他物质,具有对 ...

  2. java开发有不加班的吗_千万不要相信程序员在加班时间写的代码!

    作为一个最底层的程序员,我先记录一些只有底层程序员才会知道的事情.如果多年后,我违背自己进入这个行业的初心,走上管理岗位,也能回想起一些禁忌,避免一些错误. 其中最重要的就是这条:不要相信一个程序员在 ...

  3. 小程序执行运行过程原理_分享 | 还在焦虑等成绩?成绩小助手了解下

    在咱们北林,期末考试后,我们往往不知道具体什么时候出成绩,以致我们隔三岔五地就要登一次系统,看看成绩是否更新,甚是麻烦. 为了缓解同学们反复查询的苦恼和焦虑的心情,我用python编写了一个小程序「成 ...

  4. 微信小程序商店 | 即速商店_福利类小程序

    即速应用商店_分类最齐全的小程序商店,收录当前最新最热门小程序,汇集各行业小程序案例及评测,在这里可以轻松找到各种实用好玩的小程序,也可免费发布 自己的小程序获取巨大流量 . PS:关于微信小程序商店 ...

  5. 微信小程序网络请求异常怎么办_监控微信小程序wx.request请求失败

    在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求.其重要性不言而喻.然而,却经常遇到请求失败的问题,笔者特意谷歌"wx.request ...

  6. 小程序分享到朋友圈_如何给小程序添加分享朋友圈

    微信公众号更新以后,推送不是按照优先来的,你们可以把我的微信公众号点击设置为星标,以便于及时的接收信息. 从微信小程序官方分享朋友圈有那么几天了,今天就分享下如何给自己的小程序添加分享朋友圈代码,几行 ...

  7. 小程序向webview传参_独家 | 支付宝小程序向个人开发者开放公测

    基于兴趣和周围小群体开发的个人小程序,才是为支付宝提供更加多样化的生活服务场景的来源. 文 | Tech星球 (微信ID:tech618) 尹非凡.刘宁宁 2月26日,Tech星球(微信ID:tech ...

  8. java安装了为什么运行不了_如何安装java(安装了java为什么不能使用)

    如何安装java 1.双击下载的程序包,它将如图所示. 2.单击下一步:在这里,我将路径更改为(D驱动器下的jdk1.8) 3.继续下一步,将出现一个弹出框,单击"确定". 4.单 ...

  9. 如何设置计划任务程序 每6小时运行一次_磁盘碎片整理程序 DiskTrix UltimateDefrag 6.0.62.0 中文汉化版...

    UltimateDefrag 6 中文版是由 DiskTrix 公司开发的一款独家支持对 NTFS 系统元文件进行碎片整理和自定义放置的终极磁盘碎片整理工具,完全解决了与碎片和文件放置相关的硬盘性能的 ...

最新文章

  1. Python与PHP的区别?
  2. 科学研究发现,盲人用时间感知空间
  3. 购物价值观(values of shopping)
  4. Java实现从Html文本中提取纯文本
  5. Qt窗口部件与布局之二:布局管理
  6. DataSet 的 Merge 方法
  7. 20应用统计考研复试要点(part36)--概率论与数理统计
  8. python判断一个对象是否可迭代_python - 在Python中,如何确定对象是否可迭代? - includeStdio...
  9. DDD“上吊绳驱动开发”,开发要想不被“吊死”,该如何自救?
  10. hanlp加载预训练模型
  11. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_02-项目概述-功能构架-功能模块和项目原型...
  12. node-cookie- session
  13. idea 离线安装sonarlint 插件
  14. ERP常用词汇中英文对照
  15. android小米手机变慢,手机越来越慢怎么破?小米手机七大加速绝招
  16. 六 Python 字典与集合
  17. Element properties is not closed
  18. python把正整数翻译成英文_使用Python将Pig Latin翻译成英文3
  19. SCI,SSCI,EI傻傻分不清
  20. 一款APP从设计稿到切图过程全方位揭秘 Mark

热门文章

  1. clion打开时如何不自动重新打开上一次的项目
  2. 快速排序——主要思想是分治
  3. JavaScript函数的两种声明方式,你了解多少?
  4. 测试线程的状态(Java)
  5. php挂qq,PHP在线挂QQ个人隐私泄漏
  6. 为XHR对象所有方法和属性提供钩子 全局拦截AJAX
  7. 在通往VR内容的道路上,音乐将成为一项重要助力
  8. 项目组网技术方案实施要点
  9. EmEditor小功能与使用技巧
  10. DQL——数据查询语言