対処しなければならない問題がいくつかあります。
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 つだけですか?