zoukankan      html  css  js  c++  java
  • CLR via C# 读书笔记 31 一种单实例应用程序的实现(信号量)

    单实例应用程序指的是在你的操作系统中你只能开一个的程序

    例如说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.
    }
    }
    }
    }

  • 相关阅读:
    信息收集与扫描
    流密码
    信息安全面临的威胁
    .net core Web应用启动类
    .net core 1.0 Web MVC 自定义认证过程
    彻底脱离循环与结束当下循环
    Java多线程:Thread中的实例方法
    memcached安装问题
    五月的仓颉
    json时间格式化方法
  • 原文地址:https://www.cnblogs.com/PurpleTide/p/1880718.html
Copyright © 2011-2022 走看看