c# - 如何检查另一个应用程序实例是否正在使用相同的资源运行
问题描述
我想找到另一个应用程序实例正在为相同的资源运行。我的应用程序支持多个实例。我想限制每个资源一个实例。
应用程序可执行文件名称是 COMTest.exe 程序集标题是 COMPortTest 。任务管理器显示程序集标题。应用程序标题可以是 COMPort1, COMPort2...COMPortX 。任务管理器还显示应用程序标题。
假设如果一个实例正在为 COM1 端口运行并且用户启动另一个实例并选择相同的 COM1 端口,我应该发布错误消息。
我想检查正在运行的应用程序的应用程序标题。我怎样才能做到这一点。
谢谢
解决方案
这是其中一种情况,最可靠的方法可能是尝试处理异常。
正在使用的 COM 端口对于您的应用程序来说完全是外生的。即使您可以在程序的实例之间进行通信,如果其他程序正在使用这些端口怎么办?
你无法避免它。你不能明智地测试它。这不是致命的。它显然是外生的。因此,无论抛出什么异常都应该由您的 COM 访问代码处理。您可能会使用某种形式的循环或函数调用,并且可以在该循环或函数内完成此处理。
一种替代方法是让守护进程完成实际测试。您可以通过 TaskSheduler 启动它,您会为每个用户获得一个 GUI,并且各方只需通过您喜欢的任何 IPC 方法进行通信。当然,您仍然必须使用这些端口处理其他人的程序,因此您不会真正获得任何收益。
推荐阅读
- javascript - AsyncStorage.getItem 返回未定义(即使使用 .then 和 .parse)
- javascript - 我如何使用javascript获取选择选项中的值
- postgresql - 获取 JSON 列中的键列表
- javascript - D3 - 如何在拖动功能中访问新数据
- drools - 我们如何在 Drools(Kie 服务器)中创建动态下拉列表?
- android - 我在适配器的自定义布局中有一个 Spinner 字段。加载数据位置明智的问题
- python - 列表列表中的组合
- load-testing - 如何停止在 K6 中复制脚本?
- ios - 在 xcode 11 上运行应用程序后,iPhone 10 和 11 没有足够的高度
- sql-server - PDO_SQLSRV 在 symfony 中运行很慢?