デバイスに接続/再接続するために、vb.net のバックグラウンド スレッドを使用しています。正常に動作していますが、約 2 時間後に、コードの次の部分でプログラムが stackoverflow 例外をスローしています。
if connected = True then
Thread.Sleep(500)
Exit sub
endif
その後、私は再びサブを呼び出しています。
Sleep-Timeをたとえば1000ミリ秒に設定することもできますが、これは最善の解決策ではないと思います...「バックグラウンドワーカー」(ビジュアルスタジオを使用)がより良い解決策/私の問題を解決しますか?または、スタックをクリーンアップする可能性はありますか?
ご協力いただきありがとうございます!
編集:
Module connection
Public Sub connect()
connect_loop()
connect()
End Sub
Public sub connect_loop()
if connected = True Then
**HERE IS WHERE THE EXCEPTION IS THROWN**
Thread.Sleep(500)
Exit Sub
Endif
'Code for the Connection (ping, open Socket etc.)....
End Sub
エンドモジュール
モジュールは、メイン ルーチンからバックグラウンド スレッドとして開始されます。
Public background As New Thread(AddressOf connection.connect)
background.IsBackground = True
background.Start()
接続にコードが必要ですか? 実際の接続部分では例外がスローされないため、ここには記述しませんでした。また、2 時間すべて正常に動作します。