代码之家  ›  专栏  ›  技术社区  ›  Blessed Geek

.NET-限制执行单元的实例数

  •  2
  • Blessed Geek  · 技术社区  · 14 年前

    假设我有一个用C#编写的名为EquipCtrl.exe的应用程序,它作为PC上的本地进程运行,以控制一台设备。

    显然,我希望每台电脑上只运行一个Equipctrl实例,如果每台电脑上有两个Equipctrl控件,那么我会将其限制为每台电脑两个实例。

    我的方式是 一。进程名。我给进程命名为EqCtrl,在进程启动时,它将用名称“EqCtrl”来计算进程的数量。 2。执行名称。在启动时,计算执行名为EquipCtrl.exe的进程数。 三。注册表记录。 四。SQL Server数据库记录。

    对我来说,进程名或执行名检测是最简单的,也是我最常做的(如果不是全部的话)。但是,它们很容易发生名称冲突。即使我进一步查找执行路径,也可以通过将执行文件复制到另一个文件夹来规避限制。

    在.NET上执行执行限制的最佳方法是什么?为什么?注册记录是最好的方式吗?

    4 回复  |  直到 14 年前
        1
  •  7
  •   Stu    14 年前
        2
  •  1
  •   Chris Baxter    14 年前
        3
  •  0
  •   quentin-starin    14 年前

    隐马尔可夫模型。。当我们只允许应用程序的一个实例时,我们使用 named mutex

    这并不能完全满足你的需求。

    另一点,为了避免冲突,除了可执行文件名和目录之外,还要使用可执行文件的MD5散列。

        4
  •  0
  •   Rohit Sharma    14 年前

    您可以使用名为mutex\simaphore的计数来完成此操作,还可以确保您创建的mutex/simaphore前缀以GLOBAL\and LOCAL\n开头,否则远程桌面连接将不会读取这些名为mutex的值,并且计数将丢失。

    http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx

    推荐文章