使用Kepware OPCServerv4.0 (OPCServerCommLib.dll)的通信库,当我试图断开与OPC服务器的连接时,我开始接收此错误。有关此错误的信息可以从任何地方获得,Kepware支持无法提供帮助。我认为即使在执行断开操作之后,我的程序仍在尝试读取,但我不明白为什么。下面是使用线程读取数据的基本方法:
Private Sub MonitoringThread()
If OPCServerConnected Then
PerformOPCReadOperation()
End If
System.Threading.Thread.Sleep(100)
End Sub发布于 2013-10-02 13:23:58
即使在断开连接时,OPCServerConnected是假的,但是这个变量没有及时得到更新,使用户无法看到它。我就是这样解决这个问题的。如果有人能找到更好的方法来做这件事,你可以随意张贴你自己的答案。
在线程结束前添加这一行: ThreadStopped()
在基类中,添加以下内容:
Public m\_AutoResetEvent As AutoResetEvent = New AutoResetEvent(False)Protected Sub ThreadStopped()
m_AutoResetEvent.Set()
End Sub最后,在调用断开连接的例程(关机、退出、重新启动等)中,在调用OPC断开方法之前添加以下行:
m_AutoResetEvent.WaitOne() https://stackoverflow.com/questions/19137985
复制相似问题