0

使用 Kepware OPC Server v4.0 的通信库 (OPCServerCommLib.dll) 当我尝试断开与 OPC 服务器的连接时,我开始收到此错误。无法从任何地方获得有关此错误的信息,并且 Kepware 支持无法提供帮助。我认为即使在执行断开连接操作后,我的程序仍必须尝试读取,但我不明白为什么。这基本上是我使用线程读取数据的方式:

Private Sub MonitoringThread()
  If OPCServerConnected Then
  PerformOPCReadOperation()
  End If
System.Threading.Thread.Sleep(100)
End Sub
4

1 回答 1

0

即使 OPCServerConnected 在断开连接时设置为假,此变量也不会及时更新以使胎面能够看到它。这就是我解决问题的方法。如果有人可以看到更好的方法,请随时发布您自己的答案。

在线程结束之前添加这一行:ThreadStopped()

在基类中,添加以下内容:
Public m_AutoResetEvent As AutoResetEvent = New AutoResetEvent(False)

Protected Sub ThreadStopped()
    m_AutoResetEvent.Set()
End Sub

最后,在调用断开连接的例程中(关闭、退出、重新启动等),在调用 OPC Server 断开连接方法之前添加以下行:

m_AutoResetEvent.WaitOne() 
于 2013-10-02T13:23:58.887 回答