方法 : 複数の実行スレッドを調整する
マルチスレッド コンポーネントをスレッドセーフにするには、共有リソースへのアクセスを調整する必要があります。 同時に複数のスレッドが共有リソースにアクセスしようとすると、競合状態によりデータの破損が発生することがあります。 競合状態はロックを使用することで回避できます。 スレッドセーフおよび競合状態の詳細については、「スレッドセーフ コンポーネント」を参照してください。
オブジェクトにロックを作成するには
アトミック実行するコードおよびそのコードが実行されるオブジェクトを識別します。 詳細については、「スレッドセーフ コンポーネント」を参照してください。
該当するオブジェクトにロックを配置して、対象のコードをそのロック内に記述します。
これにより、このコードはロックされたオブジェクト上でアトミック実行されます。
SyncLock MyObject ' This represents the start of the lock on MyObject. ' Insert code to be executed atomically on MyObject here. End SyncLock ' This represents the end of the lock.
lock (MyObject) // All code inside the braces {} is executed with MyObject locked. { // Insert code to be executed atomically on MyObject here. }
参照
処理手順
チュートリアル : Visual Basic による簡単なマルチスレッド コンポーネントの作成
チュートリアル : Visual C# による簡単なマルチスレッド コンポーネントの作成