CLR via C# 读书笔记 3-1 一种单实例应用程序的实现(信号量)
2010-11-18 14:07
288 查看
单实例应用程序指的是在你的操作系统中你只能开一个的程序
例如说outlook
以下代码通过 Semaphore 实行了一个单实例的控制
(事实上你使用EventWaitHandle 或者 Mutex都是可以的)
原理是因为windows不允许重名的核心对象 ,例子中是 "SomeUniqueStringIdentifyingMyApp"
第一次调用Semaphore的时候,系统将创建一个对象并将createdNew设置为true
第二次调用Semaphore的时候,系统返回现有同名对象并将createdNew设置为false
例如说outlook
以下代码通过 Semaphore 实行了一个单实例的控制
(事实上你使用EventWaitHandle 或者 Mutex都是可以的)
原理是因为windows不允许重名的核心对象 ,例子中是 "SomeUniqueStringIdentifyingMyApp"
第一次调用Semaphore的时候,系统将创建一个对象并将createdNew设置为true
第二次调用Semaphore的时候,系统返回现有同名对象并将createdNew设置为false
using System; using System.Threading; public static class Program { public static void Main() { Boolean createdNew; // Try to create a kernel object with the specified name using (new Semaphore(0, 1, "SomeUniqueStringIdentifyingMyApp", out createdNew)) { if (createdNew) { // This thread created the kernel object so no other instance of this // application must be running. Run the rest of the application here... } else { // This thread opened an existing kernel object with the same string name; // another instance of this application must be running now. // There is nothing to do in here, let's just return from Main to terminate // this second instance of the application. } } } }
相关文章推荐
- 《CLR via C#》读书笔记-单实例应用程序
- CLR via C# 3 读书笔记(13):第2章 生成、打包、部署和管理应用程序与类型 — 2.4 将模块组合为程序集(下)
- CLR via C# 3 读书笔记(16):第2章 生成、打包、部署和管理应用程序与类型 — 2.8 简单管理控制(配置)
- CLR via C# 读书笔记 3-5 .net framework4.0 新增类 Task(一种很好的异步模型)
- CLR via C# 3 读书笔记(11):第2章 生成、打包、部署和管理应用程序与类型 — 2.3 元数据简介
- CLR via C# 3 读书笔记(15):第2章 生成、打包、部署和管理应用程序与类型 — 2.6 语言文化 & 2.7 简单应用程序部署
- CLR via C# 3 读书笔记(14):第2章 生成、打包、部署和管理应用程序与类型 — 2.5 程序集版本资源信息
- CLR via C# 3 读书笔记(10):第2章 生成、打包、部署和管理应用程序与类型 — 2.2 将类型生成为模块
- 《CLR via C#》读书笔记 之 生成、打包、部署和管理应用程序及类型
- CLR via C# 3 读书笔记(12):第2章 生成、打包、部署和管理应用程序与类型 — 2.4 将模块组合为程序集(上)
- C#夯实基础之接口(《CLR via C#》读书笔记)
- 读书笔记—CLR via C#章节3
- 《CLR via C#》读书笔记-线程同步(二)
- 《CLR via C#》读书笔记-Attribute
- 基于.Net平台应用程序唯一运行实例C#代码实现
- CLR via C# 读书笔记2-7
- 读书笔记—CLR via C#章节4-7
- 利用C#线程机制实现应用程序的单实例运行
- 基于.Net平台应用程序唯一运行实例C#代码实现
- CLR via C# 读书笔记 枚举类型