windows应用程序单实例
前言
这才第几天博客就跟不上了,看来一天一篇博客的目标还是有点大,写博客还是挺费时间的,写了不满意删,删完再写。。。直到自己没了耐心。今天先写个前言,实质性的内容明天再补吧。今天一天的收获还是挺多的,首先windows下单例程序的实现方式,这篇文章最主要介绍一个进程间通信的方式。当然其他方法也需要介绍。还有编程中的敏捷开发,这个内容现在是大体上了解了,还有待深挖,学会后应用到自身上试试。敏捷开发这部分内容等以后在专门出一篇自己的理解吧,网上这方面的内容还是挺多的。说实在的今天博客没有完成主要是因为花好多时间去搭建这个博客,为了好看加简单特效,换背景。现在还是停难看的。。。接下来每天中午应该多思考思考今天学到了什么,而不是去玩游戏了,不然每天都感觉没有写上的。
首先我们需要理解一个知识点。
当我们两次运行一个程序时(windows桌面下点击同一个应用),它是两个进程,它们两个之间是作用相同但是毫无关系的。我们
利用mutex实现进程的单例
要使用mutex我们首先需要知道mutex是进程间通信的一个方式,它是存在于操作系统中的。因此两个进程间是可以通过mutex来进行简单的通信。
下面进行详细的介绍。
|
|
这个方法必须保证mutex不被回收,否则就mutex就会新建成功,这样就无法发挥作用了 - ^v^ -!
这个代码写在App.xaml.cs中就好~,毕竟wpf程序入口在这^-^.
下面进行上面成果的演示—->
通过查找process
第二种方法是根据程序的程序名来进行查找同名的程序,若找到的程序数大于1说明有旧的同名程序。(这种方式几乎不用^-^)!
下面给出代码,代码位置和上面第一种方式的一样,写在AppStartUp中就好 –。
|
|
后记
还有一种我觉的可以常用的方式,就是前言里提到的使用进程间通信方式命名管道。本来想写在这一篇文章中的,但是这样就会使这篇文章内容太多,以后回来看也会不方便,所以呢剩下的那一种利用管道的方法放在下一篇文章中介绍。
windows应用程序单实例的更多相关文章
- Qt实现应用程序单实例运行--LocalServer方式
使Qt应用程序能够单实例运行的典型实现方法是使用共享内存实现.该方法实现简单,代码简洁. 但有一个致命缺陷:共享内存(QSharedMemory)实现的单程序运行,当运行环境是UNIX时,并且程序不幸 ...
- DevExpress Winform使用单例运行程序方法和非DevExpress使用Mutex实现程序单实例运行且运行则激活窗体的方法
原文:DevExpress Winform使用单例运行程序方法和非DevExpress使用Mutex实现程序单实例运行且运行则激活窗体的方法 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...
- C++实现程序单实例运行的两种方式
简介 在我们编写程序的时候,经常会注意到的一个问题就是如何能够让程序只运行一个实例,确保不会让同一个程序多次运行,从而产生诸多相同进程,给我们的带来不便呢?那么常用的有以下四种方法,第一种方法是通过扫 ...
- c#设计应用程序单实例运行
利用WindowsFormsApplicationBase的IsSingleInstance来控制应用程序只能单实例运行. [DllImport("user32.dll", Ent ...
- linux保证程序单实例运行
static int proc_detect(const char *procname){ char filename[100] = {0}; sprintf(filename, "%s/% ...
- WinForm 登录窗体 + 单实例运行
关于怎么在winform里增加登录窗体或者如何让winform程序单实例运行网上都很多例子. 然而两者结合起来呢? //Program.cs static class Program { public ...
- WPF:如何实现单实例的应用程序(Single Instance)
原文:WPF:如何实现单实例的应用程序(Single Instance) 好吧,这是我将WPF与Windows Forms进行比较的系列文章的第四篇,讨论一下如何实现单实例(single instan ...
- 使用 WPF 创建单实例应用程序
一个简单的例子就是大家在使用很多应用程序,例如在使用Microsoft Word 时会遇到一种情况,不管你打开多少个文档,系统一次只能加载一个winword.exe 实例.当打开新文档时,文档在新窗口 ...
- Windows进程单实例运行
场景 Windows进程单实例运行,如果有进程没有退出,继续等待,直到进程完全退出,才会进入下一个实例 HANDLE pHandle = NULL; do { pHandle = ...
随机推荐
- CSP2019爆零记
Upd:2019.10.19 初赛 Day 0 CSP-S膜你赛(然而只考一个小时xs) 写(xia)完(xie)有51.5 很虚,很慌 不过CSP-J的模拟有90?(所以CSP-S模拟的码风怎么这么 ...
- 启动outlook时报错:mapi无法加载信息服务msncon.dll
今天这个Office2010 outlook搞的让人蛋疼,老是说启动outlook时报错:mapi无法加载信息服务msncon.dll. 百度了一下,如下解决方案: 安装路径为D:\NEW Windo ...
- 解决UITextView无法滚到底部
程序中有一个UITextView控件 @property (weak, nonatomic) IBOutlet UITextView *textView; 一般情况下,以下代码可实现UITextVie ...
- Django静态文件配置-request方法-ORM简介-字段的增删改查
app的创建注意事项: 在Django新创建的app要在seetings.py中添加注册,才会生效 创建app:django-adminapp an startapp app名称 或者 python3 ...
- Complier
Complier [2019福建省赛] 模拟题应该有信心写,多出一些样例 当/* 与// 在一起的时候总会出错,一旦出现了这些有效的 应该把它删掉不对后面产生影响 #include<bits/s ...
- iOS UIWebView 允许所有三方cookie
前几天项目中用到UIWebView, 而在网页中,用到了多说评论的第三方.但是当我在手机端发表评论的时候,出现禁用第三方cookie,而安卓是没有这种情况的,于是就在找原因.找了很久也没有找到原因.一 ...
- 迅为iTop开发板使用buildroot构建opencv文件系统
这次我们来介绍使用buildroot构建opencv开发环境,buildroot 是 Linux平台上一个构建嵌入式Linux系统的框架.整个buildroot是由 Makefile脚本和Kconfi ...
- 【SpringCloud】Eureka入门与原理
为了开发效率高效和业务逻辑清晰,越来越多的项目采用分布式系统.分布式最重要的就是注册中心了.Eureka是SpringCloud原生提供的注册中心,来look一波吧. 超光速入门 服务端 引入依赖: ...
- 【flask】RestFul的基本鉴权
编写API的基本鉴权 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : shenqiang from flask import Fla ...
- 年度Java技术盘点,懂这些技术的程序员2019发展大好
与一年前一样,Java仍然是最流行的编程语言.据TIOBE的数据显示,几十年来,Java比其他语言更常名列榜首,Java因为它拥有可移植性.可扩展性和庞大的用户社区,所以许多知名互联网公司使用Java ...