0

Kepware OPC サーバー 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 は切断時に false になりますが、この変数はトレッドが確認するのに間に合うように更新されません。これが私が問題を解決した方法です。誰かがこれを行うためのより良い方法を見ることができる場合は、自由に独自の回答を投稿してください。

スレッドの終了直前に次の行を追加します: ThreadStopped()

基本クラスで、次を追加します。
Public m_AutoResetEvent As AutoResetEvent = New AutoResetEvent(False)

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

最後に、切断が呼び出されるルーチン (シャットダウン、終了、再起動など) で、OPC サーバーの切断メソッドを呼び出す前に次の行を追加します。

m_AutoResetEvent.WaitOne() 
于 2013-10-02T13:23:58.887 に答える