我正在编写托管代码,该代码必须与供应商的 COM 自动化服务器进行交互,但该服务器已耗尽进程。我发现如果有多个客户端连接到该服务器,它就会变得不稳定。例如,如果我在进程 A 中的托管代码和进程 B 中的托管代码都连接到此 COM 服务器,则将为 COM 服务器启动一个进程,并且它的行为不太可靠。 我希望有一种方法可以为每个客户端-服务器连接强制一个单独的进程。理想情况下,我想结束:
托管进程 A 与进程C1
中的 COM 服务器通信
托管进程 B 与进程C2中的 COM 服务器通信
我想到的一个想法是,如果我以不同的安全身份运行进程 A 和进程 B,那可能会导致 COM 基础架构创建单独的服务器进程。然而,我宁愿不走那条路。托管进程 A 和托管进程 B 实际上是 Windows 服务。而且我正在使用身份本地系统运行它们(因为我需要它们能够与桌面交互,并且您无法检查服务小程序上的“与桌面交互”框以获取不作为本地运行的服务系统)。而我需要与桌面交互的原因是这个COM服务器偶尔会在屏幕上抛出一个对话框,如果服务本身不能与桌面交互,那么COM服务器生成的不能显示对话框(我相信它是显示在隐藏的 WinStation 上)。