1.WPF程序在 启动窗口的构造函数执行InitializeComponent之前判断是否已经存在实例

  • 不涉及服务器情况,可直接进行判断(不在mainwindow的构造函数中判断)
       // public MainWindow()
// {
// private bool _createNew;
// string exeName = Properties.Resources.ThreadName;
// Mutex mutex = new Mutex(true, exeName, out _createNew); //only one instance is allowed
// if (!_createNew)
// {
// MessageBox.Show(Properties.Resources.ThereAlreadyApp);
// App.Current.Shutdown();
// return;
// }
// InitializeComponent();
// }
  • 涉及服务器(好多复制粘贴的网址,不知道那个是原创,找了能找到时间最早的链接,侵删) 在 exeName字符串加 “Global\\”

如果已经有实例运行,关闭当前试图运行的程序。

更新  --  2016-12-23,在main函数中做判断不严谨,

托盘程序情况下,程序在桌面上显示以后,唯一ID就判断不了。改为在类App中重写OnStartup函数进行判断,强制程序退出用Environment.Exit(0);

    public partial class App : Application
{
     public EventWaitHandle ProgramStarted { get; set; } protected override void OnStartup(StartupEventArgs e)
{
bool createNew;
ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "MyTctiApp", out createNew); if (!createNew)
{
MessageBox.Show("already exit");
App.Current.Shutdown();
Environment.Exit();
}
base.OnStartup(e);
}
}

WPF程序只运行一个实例的更多相关文章

  1. 关于WPF程序只运行一个实例的方法

    找到的方法有两种: 1)http://www.cnblogs.com/liuyazhou/archive/2009/11/02/1594364.html 2)http://codereview.sta ...

  2. vc++高级班之窗口篇[4]---让程序只运行一个实例

      大家都看过或者使用过类似只运行一个实例的程序,比如:QQ游戏.部分浏览器 等等! 让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建后,有窗口的程序在窗口创建前, 检查系统中是 ...

  3. VC 实现程序只运行一个实例,并激活已运行的程序

    转载:http://blog.sina.com.cn/s/blog_4b44e1c00100bh69.html 进程的互斥运行:CreateMutex函数实现只运行一个程序实例 正常情况下,一个进程的 ...

  4. C#让应用程序只运行一个实例的几种方法

    一 判断是否有相同的实例已经运行 1 根据“Mutex”判断是否有相同的实例在运行 /// <returns>已有实例运行返回true,否则为false</returns>pu ...

  5. [VC]在VC++中实现让程序只运行一个实例的方法且实现该实例

    方法一: 有时候在开发应用程序时,希望控制程序运行唯一的实例.例如,最常用的mp3播放软 件Winamp,由于它需要独占计算机中的音频设备,因此该程序只允许自身运行唯一的一个例程.在Visual C+ ...

  6. Java程序只运行一个实例[转]

    如果希望你的Java程序只能存在一个实例,可以参考下面的用法. 原文链接:http://blog.csdn.net/yaerfeng/article/details/7264729 Java没有提供这 ...

  7. VC程序只运行一个实例,并在打开多个时激活原窗口

    (一)单文档应用程序   1.在应用程序类C~~App::InitInstance()函数中判断是否已有一个应用程序实例正在运行 BOOL C~~App::InitInstance() {     . ...

  8. Winform(C#)限制程序只运行一个实例

    C#控制只运行开启一个程序 在这个例子中不需要调用ReleaseMutex,mutex会在程序结束时自动释放.为了防止mutex过早释放,在程序的最后调用下GC.KeepAlive (mutex). ...

  9. 让程序只运行一个实例(Delphi篇)(三种方法,其中使用全局原子的方法比较有意思)

    Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要 ...

随机推荐

  1. 用Editplus开发Java

    ☆ 准备工作 ①,已安装好jdk,同时配置系统变量(3个,JAVA_HOME,PATH,CLASSPATH) ②,电脑已安装Editplus,并做好设置. ☆ Editplus配置java开发环境 对 ...

  2. 被spring和hibernate4逼疯

    spring3.1整合hibernate4,事务都配置上了的,但getCurrentSession()仍然获得不到 以下是各配置 web.xml ? 1 2 3 4 5 6 7 8 9 10 11 1 ...

  3. PDO 学习与使用 ( 二 ) PDO 数据提取 和 预处理语句

    以数据库 msg 为例,说明 PDO 的数据提取.预处理语句: mysql> show tables;+---------------+| Tables_in_msg |+----------- ...

  4. PHP基本使用

    本篇说的基本使用包括: php常规的语法 date,number,array等对象的处理方式 程序语言的常规的语法都比较好理解,大致相同.假如你是精于其它解释型语言的程序员,迁移到php几乎不费力气. ...

  5. 如何解决php 生成验证码图片不显示问题

    最近遇到一个问题,就是验证码在别人的电脑上可以显示,但是我自己的电脑上去不能.原因找了好久,哈哈,终于找到了!现在给大家分享一下: 程序: <?php $w = 80; //设置图片宽和高 $h ...

  6. space ship

    按下向上箭头,飞船速度不是一直增加 而且飞船移动的方向是固定的不是有角度的 按下箭头飞船可以飞了,但是不减速 加一个keyup handler就可以啦!可以一直加速,不按的时候也可以减速 按下向下按钮 ...

  7. svn update 失败 且 clean up失败解决方法

    当出现这种情况时,大多数是因为svn的数据库还有队列没处理完.而我们要做到仅仅是把队列清除即刻. 具体做法是: 1.下载sqlite3.exe下载地址:sqlite官网http://www.sqlit ...

  8. random circle

    <!doctype html><meta charset="utf-8"><html><head><title>D3 t ...

  9. {转}每次从vss获取文件都是只读

    http://www.cnblogs.com/lauplay/p/3141636.html 在 Visual Studio 2008 中,使用 VSS 作为源码管理器,把文件签入后,文件会自动变为只读 ...

  10. isset和empty比较

    PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在 ...