2

プログラムにバックグラウンド ワーカーを実装しましたが、スレッド外で宣言されたグローバル変数にアクセスしています。ITはエラーを引き起こしませんが、checkillegalstringプロパティを設定すると、いたるところにクロススレッド例外があります。以前に宣言したグローバル変数を使用しているためであることがわかりました。

バックグラウンド ワーカー スレッド内でグローバル変数を使用できる場所がどこにも見つからないようです。これは可能ですか?

4

2 に答える 2

4

最も簡単な方法は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

これから発生する可能性のあるデッドロックなどの他の落とし穴に注意してください。

于 2013-07-30T21:16:04.003 に答える