当前位置:  编程技术>.net/c#/asp.net

使用mutex实现应用程序单实例运行代码分享

    来源: 互联网  发布时间:2014-10-26

    本文导语:  System.Threading.Mutex :同步基元,它只向一个线程授予对共享资源的独占访问权。实现原理: 在程序启动时,请求一个互斥体,如果能获取对指定互斥的访问权,就继续运行程序,否则就退出程序。测试代码: 代码如下:class Test  ...

System.Threading.Mutex :同步基元,它只向一个线程授予对共享资源的独占访问权。
实现原理: 在程序启动时,请求一个互斥体,如果能获取对指定互斥的访问权,就继续运行程序,否则就退出程序。
测试代码:

代码如下:

class Test
     {
         ///
         /// 应用程序的主入口点。
         ///
          [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",五秒钟后,程序自动退出。

    
 
 

您可能感兴趣的文章:

  • 请教下,应用程序使用通过驱动程序使用设备的过程
  • java的应用程序中如何定义一个全局变量,在程序的任何地方都可以修改使用?
  • 如何在应用程序中使用SDL库
  • 使用linux内核+qt开发的应用程序需要开源吗
  • 应用程序如何使用sd卡
  • 应用程序为普通用户所有,不改变其所有,如何在程序中使用超级用户级别的函数啊
  • 如何使用LINUX为不同子网的WIN98客户端不同的应用程序做代理?给分100
  • 请问freeBSD中是否可以直接使用linux的应用程序主要是为了安装jdk
  • android开发教程之获取使用当前api的应用程序名称
  • 如何在java应用程序下使用绘图类(Graphics)以及图形类(Image)?
  • 使用C# Winform应用程序获取网页源文件的解决方法
  • 安装fcitx-3.0.2-1.i386.rpm后怎么使用啊?找不到应用程序?
  • 在linux下使用POSIX多线程库开发应用程序的时候需要定义宏_POSIX_C_SOURCE和_REENTRANT吗?
  • 请问这样在技术上是否可行?(我自己写一个程序来监听我的系统上的端口,有些端口已经被别的应用使用,我能够使用什么方法再去监听这个端
  • C语言应用程序使用的函数来源于libc库, Libc库中的函数是在哪里实现的??
  • 关于嵌入式linux应用程序使用那种语言的问题
  • 自己编的动态库与应用程序必须使用一个(版本)gcc吗?
  • C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
  • 使用python搭建Django应用程序步骤及版本冲突问题解决
  • IIS 6.0 应用程序池回收和工作进程使用介绍
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 类的方法和实例方法,类字段和实例字段有什么不同,在使用上?
  • Python namedtuple(命名元组)使用实例
  • LINUX中实现单实例功能使用哪种IPC好啊?
  • boost库区间range基本原理及使用实例
  • android 弹出提示框的使用(图文实例)
  • c++类库Boost::bimap(双向映射)介绍及使用实例
  • 使用PackageManager获得应用信息实例方法
  • mongodb 数据库常用命令使用实例
  • android自动安装apk代码实例(不使用apk安装器安装)
  • java获取当前日期使用实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有谁使用JRun,为何可以运行Servlet,却不能运行jsp?
  • 用Jbuilder3 遇到问题不能运行把可疑代码注掉后可以运行但是重新使用可疑代码时又可以运行了多次重复都是如此
  • 在windows下使用虚拟机运行linux,在不插入网线的状态下可不可以使用smb服务
  • 菜鸟问题,小弟刚刚使用LINUX不久,不知道如何使用编程工具进行编译和运行!
  • redhat ent 4 u4上,如何象readhat ent3 u6版本那样使用top可以查看每个逻辑CPU的利用率以及运行进程的资源使用情况?
  • 怎样在jbuilder中使用命令窗口运行java 程序?
  • UNIX下使用java运行class的问题
  • 我在linux8.0下装了mysql,已经运行进程mysqld,但怎么设置和使用它呢?
  • 使用JavaScript实现的Flash运行环境 Gordon
  • LINUX 下使用QT开发的程序如何才能让它在没有安装QT的Linux系统下运行?
  • 使用信号量如何让父子进程交替运行?
  • 请问LINUX下.so结尾的文件如何运行,或者使用?
  • 在Solaris上使用Motif开发,有什么函数可以得到当前程序运行的目录?
  • 关于Vim的使用问题,怎么让Vim启动时运行某一命令
  • 急!高手帮忙!cximage库在Linux下运行使用的问题。
  • 不解决也给分。如何使用vmware?我的能用vmware运行两个操作系统吗?
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • 如何将运行dos的机子联入网络,或在dos下使用网络硬盘
  • 在Solaris下,使用xalan对XML转换时,出现错误,怎么办?同样程序在Windows可正常运行。
  • 在redhat 9下,使用解压包的方式安装QQ for linux--./qq 运行,提示“浮点数例外”,如何解决这个问题呢?
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    docker中文入门学习手册 iis7站长之家