zoukankan      html  css  js  c++  java
  • 避免在同一机器上同时运行同一应用程序的多个实例

    • 通常,使用有名互斥体(named mutex).但是该方案有以下的缺陷
      • 互斥体的名称有被其他应用程序使用的较小,潜在风险.此时,该方案不再有效,并且很难检测到bug.
      • 该方案无法实现允许一个应用程序产生N个实例这样的一般问题.
    • 使用Process类.
     1         /// <summary>
     2         /// check whether other instance of the application is running.
     3         /// </summary>
     4         /// <returns></returns>
     5         private bool TestIfAlreadyRunning()
     6         {
     7             Process currentProcess = Process.GetCurrentProcess();
     8 
     9             foreach (var process in Process.GetProcesses())
    10             {
    11                 // avoid check this process itself.
    12                 if(currentProcess.Id != process.Id)
    13                 {
    14                     //if other instance is running,the Process Name must identical.
    15                     if (currentProcess.ProcessName == process.ProcessName)
    16                         return true;
    17                 }
    18             }
    19 
    20             return false;
    21         }
    TestIfAlreadyRunning
    • Process.GetProcesses()也可以传递机器名称.这样返回的就是远程机器上运行的所有进程.
  • 相关阅读:
    js-link下载文件
    sql-优化建议
    Studio-环境变量设置
    Studio
    Docker下安装ElasticSearch和Kibana
    sklearn 中的 r2_score
    R语言将所有列数据正交化/缩放
    R语言 random forests out-of-bag prediction
    R语言 coalesce 函数
    R语言 case_when 函数
  • 原文地址:https://www.cnblogs.com/robyn/p/3812515.html
Copyright © 2011-2022 走看看