首页 > 解决方案 > 如何检查另一个应用程序实例是否正在使用相同的资源运行

问题描述

我想找到另一个应用程序实例正在为相同的资源运行。我的应用程序支持多个实例。我想限制每个资源一个实例。

应用程序可执行文件名称是 COMTest.exe 程序集标题是 COMPortTest 。任务管理器显示程序集标题。应用程序标题可以是 COMPort1, COMPort2...COMPortX 。任务管理器还显示应用程序标题。

假设如果一个实例正在为 COM1 端口运行并且用户启动另一个实例并选择相同的 COM1 端口,我应该发布错误消息。

我想检查正在运行的应用程序的应用程序标题。我怎样才能做到这一点。

谢谢

标签: c#.netwinforms

解决方案


这是其中一种情况,最可靠的方法可能是尝试处理异常。

正在使用的 COM 端口对于您的应用程序来说完全是外生的。即使您可以在程序的实例之间进行通信如果其他程序正在使用这些端口怎么办?

你无法避免它。你不能明智地测试它。这不是致命的。它显然是外生的。因此,无论抛出什么异常都应该由您的 COM 访问代码处理。您可能会使用某种形式的循环或函数调用,并且可以在该循环或函数内完成此处理。

一种替代方法是让守护进程完成实际测试。您可以通过 TaskSheduler 启动它,您会为每个用户获得一个 GUI,并且各方只需通过您喜欢的任何 IPC 方法进行通信。当然,您仍然必须使用这些端口处理其他人的程序,因此您不会真正获得任何收益。


推荐阅读