対処しなければならない問題がいくつかあります。
Thread
まず、クラスを使用しないでください。本当。並列処理用のフレームワークを作成している場合を除き、Thread
. System.Threading.Tasks.Task
または (4.0 より前のバージョンの .NET を使用している場合) のようなものを使用してSystem.Threading.ThreadPool
、コードの非同期実行をスケジュールします。
data
第二に、スレッド間などでインスタンス変数を共有することはスティッキーであることを認識しておく必要があります。競合や競合状態の問題が発生しないように、保存するデータを非同期関数に渡す方がはるかに優れています。
第三に、これが実行の順序である場合、あなたは何をしたいですか:
<things happen>
OnEvent fires
<things happen>
Serialize starts
OnEventFires
Serialize completes
OnEvent
の途中で発生するため、完全Serialize
に無視する必要がありますか、それとも別のシリアル化をスケジュールする必要がありますか? ここで「b」と答えた場合、ここではどうすればよいですか?
<things happen>
OnEvent fires
<things happen>
Serialize starts
OnEvent fires
<things happen>
OnEvent fires
Serialize completes
2 つの通話をSerialize
スケジュールする必要がありますか、それとも 1 つだけですか?