使用mutex实现应用程序单实例运行代码分享
更新时间:2020年6月25日 11:38 点击:1862
System.Threading.Mutex :同步基元,它只向一个线程授予对共享资源的独占访问权。
实现原理: 在程序启动时,请求一个互斥体,如果能获取对指定互斥的访问权,就继续运行程序,否则就退出程序。
测试代码:
复制代码 代码如下:
class Test
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
bool flag=false;
System.Threading.Mutex mutex=new System.Threading.Mutex(true,"Test",out flag);
//第一个参数:true--给调用线程赋予互斥体的初始所属权
//第一个参数:互斥体的名称
//第三个参数:返回值,如果调用线程已被授予互斥体的初始所属权,则返回true
if(flag)
{
Console.Write("Running");
}
else
{
Console.Write("Another is Running");
System.Threading.Thread.Sleep(5000);//线程挂起5秒钟
Environment.Exit(1);//退出程序
}
Console.ReadLine();
}
运行结果:
第一次运行,输出"Running"。
不关闭第一次运行的程序, 进行第二次运行,输出"Another is Running",五秒钟后,程序自动退出。
上一篇: c#删除代码中的单行注释行示例
下一篇: c#根据网址抓取网页截屏生成图片的示例
相关文章
- 这篇文章主要介绍了C#中的lock、Monitor、Mutex学习笔记,本文讲解的都是线程同步的一些知识,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C#使用Mutex简单实现程序单实例运行的方法,涉及C#实现单实例程序运行的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要为大家详细介绍了C#多线程中如何运用互斥锁Mutex,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
一文带你了解.Net基于Threading.Mutex实现互斥锁
互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。这篇文章主要介绍了一文带你了解.Net基于Threading.Mutex实现互斥锁,感兴趣的可以了解一下...2021-09-22- 本篇文章主要是对互斥量mutex的简单使用进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
- 本文主要介绍了使用Mutex实现应用程序单实例运行的方法,实现原理是在程序启动时,请求一个互斥体,如果能获取对指定互斥的访问权,就继续运行程序,否则就退出程序...2020-06-25
- 这篇文章主要介绍了C#中Mutex对象用法,结合实例形式分析了Mutex对象的功能与线程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 本篇文章主要是对c#中的mutex互斥量进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25