方法 : 複数の実行スレッドを調整する

マルチスレッド コンポーネントをスレッドセーフにするには、共有リソースへのアクセスを調整する必要があります。 同時に複数のスレッドが共有リソースにアクセスしようとすると、競合状態によりデータの破損が発生することがあります。 競合状態はロックを使用することで回避できます。 スレッドセーフおよび競合状態の詳細については、「スレッドセーフ コンポーネント」を参照してください。

オブジェクトにロックを作成するには

  1. アトミック実行するコードおよびそのコードが実行されるオブジェクトを識別します。 詳細については、「スレッドセーフ コンポーネント」を参照してください。

  2. 該当するオブジェクトにロックを配置して、対象のコードをそのロック内に記述します。

    これにより、このコードはロックされたオブジェクト上でアトミック実行されます。

    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# による簡単なマルチスレッド コンポーネントの作成

関連項目

BackgroundWorker

概念

スレッドセーフ コンポーネント

イベントベースの非同期パターンの概要

その他の技術情報

コンポーネントのマルチスレッド