原文地址 https://www.cnblogs.com/younShieh/p/17749694.html

如果本文对你有所帮助,不妨点个关注和推荐呀,这是对笔者最大的支持~

在WPF应用程序中,想要实现软件重启,可以再Start一次该软件的exe程序。

但是有些时候我们想要这个程序是唯一运行的单例,而不是可以多开的程序。那么在实现自重启时,需要释放当前的互斥体,然后再启动新的实例。以下是一个示例:

public partial class App : Application
{
private static Mutex _mutex = null;
const string appName = "MyAppName";
bool createdNew; protected override void OnStartup(StartupEventArgs e)
{
_mutex = new Mutex(true, appName, out createdNew); if (!createdNew)
{
//应用程序已经在运行!当前的执行退出。
Application.Current.Shutdown();
} base.OnStartup(e);
} public void Restart()
{
// 释放互斥锁
_mutex.ReleaseMutex(); // 重启应用程序
System.Diagnostics.Process.Start(Application.ResourceAssembly.Location);
Application.Current.Shutdown();
}
}

我们添加了一个Restart方法,该方法首先释放互斥体,然后启动新的应用程序实例,最后关闭当前的应用程序。这样,新的应用程序实例就可以获取互斥体,而不会因为互斥体已经被占用而无法启动。

【WPF】单例软件实现自重启的更多相关文章

  1. java软件设计模式——单例设计模式中的【饿汉式】与 【懒汉式】示例

    以下为单例设计模式中的两种经典模式的代码示意: 单例设计模式(spring框架IOC,默认创建的对象都是单例的): 饿汉式: public class SingleClass { private Si ...

  2. java软件设计模式只单例设计模式

    概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...

  3. iOS中的单例

    #import "Singleton.h" @implementation Singleton static Singleton *singleton = nil; + (Sing ...

  4. 小菜学习设计模式(二)—单例(Singleton)模式

    前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...

  5. iOS开发——高级篇——iOS中常见的设计模式(MVC/单例/委托/观察者)

    关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...

  6. 我心中的核心组件(可插拔的AOP)~第十五回 我的日志组件Logger.Core(策略,模版方法,工厂,单例等模式的使用)

    回到目录 之前的讲过两篇关于日志组件的文章,分别是<第一回  日志记录组件之自主的Vlog>和<第三回  日志记录组件之log4net>,而今天主要说一下我自己开发的另一种日志 ...

  7. iOS开发:XCTest单元测试(附上一个单例的测试代码)

    测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...

  8. 两种设计模式(2)==>>"单例"

    所谓“单例”: 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资 ...

  9. iOS 设计模式之单例

    设计模式:单例 一.  单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并 ...

  10. iOS中浅淡UIApplication单例-b

    在iOS的操作系统中 每一个程序都对应一个application单例,每一个application都对应一个Appdelegate代理,在代理中控制程序的各个状态.我们在程序中获取Applicatio ...

随机推荐

  1. java.lang.IndexOutOfBoundsException

    原因:一个ArrayList数组中没有元素,而你想获取第一个元素,运行是就会报此类型的错误 解决方案:用 array[] 的  .length 查看 数组的长度

  2. GO web学习(三)

    跟着b站https://space.bilibili.com/361469957 杨旭老师学习做的笔记 路由 Controller / Router 角色 main():设置类工作 controlle ...

  3. JDBC的增删改-结果集的元数据-Class反射-JDBC查询封装

    一.使用JDBC批量添加 ​ 知识点复习: ​1.JDBC的六大步骤 (导入jar包, 加载驱动类,获取连接对象, 获取sql执行器.执行sql与并返回结果, 关闭数据库连接) 2.​封装了一个DBU ...

  4. 用git bash 生成 hexo 博客文件,报错node: command not found

    有git bash,也安装了node.js, 为什么在bash里面会说node: command not found? 电脑有段时间不能上网,下载了360系统急救箱,删了很多文件,包括一些exe文件, ...

  5. MyBatis使用注解开发(及Sqlsession连接器的本质)

    使用注解开发 底层实现机制是反射和,动态代码.反射可以获得这个类的方法属性还可以创建对象,执行方法. 面向接口编程 之前学过,面向对象编程,也学习过接口.但是真正的开发中,很多时候我们会选择面向接口编 ...

  6. Ubutnu 20.04 安装和使用单机版hadoop 3.2 [转载]

    按照此文档操作,可以一次部署成功:Ubutnu 20.04 安装和使用单机版hadoop 3.2 部署之后,提交测试任务报资源问题.原因是yarn还需要配置,如下: $ cat yarn-site.x ...

  7. sql注入-基于pikachu靶场学习之SQL注入

    sql注入(pikachu靶场学习之SQL注入) 环境准备 环境:wmware,安装两台win10的虚拟机在服务器上部署服务,在客户机上进行安全测试 声明:不涉及互联网上的资源,学习都在内网完成,一切 ...

  8. Centos安装 Apache Benchmark

    检查依赖包是否安装 1 rpm -qa|grep apr-util 2 3 rpm -qa|grep yum-utils 输出信息: 1 apr-util-1.5.2-6.el7.x86_64 2 y ...

  9. 测试与爬虫—抓包神器之Charles

    前言 之前我们讲到过fiddler(https://www.cnblogs.com/zichliang/p/16067941.html),wireshark(https://www.cnblogs.c ...

  10. SpringBoot3集成Quartz

    目录 一.简介 二.工程搭建 1.工程结构 2.依赖管理 3.数据库 4.配置文件 三.Quartz用法 1.初始化加载 2.新增任务 3.更新任务 4.暂停任务 5.恢复任务 6.执行一次 7.删除 ...