我正在使用OPCFoundation的OpcNetApi.dll与OPC服务器进行通信。
丰富UI组件助您极速集成聊天、会话、群组、直播弹幕等完备IM功能,全球接入,全平台跨终端互通,安全可靠
我不敢肯定,但我认为你所要求的并不总是可能的(没有调试器)。OPC是基于微软COM组件的。COM有两种实现方式:进程内和进程外。选择取决于OPC服务器供应商。
通过进程内实现,如果您在与OPC服务器相同的机器上运行OPC客户端,则OPC服务器只是一个直接加载到OPC客户端内存空间的dll。现在它可能是通过某种其他机制(命名管道、ReadAllItems/IP等)获取实际数据,但这仍然取决于OPC服务器的实现。真正强制停止此OPC服务器的唯一方法是结束OPC客户端或获取OPC客户端程序。当然,OPC客户端或OPC服务器可能已经实现了一种机制来结束,但不能保证。
如果它是进程外OPC实现,那么OPC服务器将在一个单独的可执行文件中运行,这样您就可以找到该可执行文件的名称并终止它。(您可以在regedit中搜索OPC服务器的名称,以找到相应的可执行文件名称)。如果我没记错的话,OPC服务器可以设计成所有客户端共享一个可执行文件,或者每个OPC客户端都有自己的可执行文件实例。
如果您正在远程运行OPC服务器,那么如果它是一个进程内实现,那么它可能会被加载到存根程序中,然后绑定到RPC。如果您阻止RPC通信的端口,我认为大多数客户端会在一段时间后决定断开连接,尽管没有守护人,但他们不会尝试重新连接。
这里有更多信息:/link/portal///Article/711/May-I-get-a-In-Proc-and-Out-Of-Proc-explanation