プログラムにバックグラウンド ワーカーを実装しましたが、スレッド外で宣言されたグローバル変数にアクセスしています。ITはエラーを引き起こしませんが、checkillegalstringプロパティを設定すると、いたるところにクロススレッド例外があります。以前に宣言したグローバル変数を使用しているためであることがわかりました。
バックグラウンド ワーカー スレッド内でグローバル変数を使用できる場所がどこにも見つからないようです。これは可能ですか?
プログラムにバックグラウンド ワーカーを実装しましたが、スレッド外で宣言されたグローバル変数にアクセスしています。ITはエラーを引き起こしませんが、checkillegalstringプロパティを設定すると、いたるところにクロススレッド例外があります。以前に宣言したグローバル変数を使用しているためであることがわかりました。
バックグラウンド ワーカー スレッド内でグローバル変数を使用できる場所がどこにも見つからないようです。これは可能ですか?
最も簡単な方法はSyncLock
Sub firstNewThread()
SyncLock objLock
'Access global object
End SyncLock
End Sub
Sub secondNewThread()
SyncLock objLock
'Guaranteed to not be executing while block in first thread is running
End SyncLock
End Sub
これから発生する可能性のあるデッドロックなどの他の落とし穴に注意してください。