2013-01-09 4 views
7

可能性の重複:
Order of event handler executionシングルスレッドプログラムではC#イベントシステムが確定的ですか?

は、C#のイベントシステムのシングルスレッドプログラムのための決定論的ですか?つまり、イベントA、B、Cをこの順番で実行すると、毎回同じ順番で処理されますか?

イベントに大きく依存するゲームロジックを作成したいと思います。イベントは、呼び出された順序で処理されることが重要です。したがって、私は与えられたイベントシステムを使うことができますか?Reactive Extensionsのようなライブラリがこれを満足するのですか、それとも自分のオブザーバーシステムを実装する必要がありますか?

+2

@Lloydこれは基本的に同じ質問ですが、3歳以上で、受け入れられる答えは、将来変更される可能性があると言います。 – Hackworth

+1

@Hackworthそれは同じ質問ですか?この質問には、複数のユーザーが参加するイベントが1つあります。あなたの質問には複数の出来事が書いてあります。どちらですか?いくつかのサンプルコードは明確にするのに役立ちます。 –

+0

@mikez純粋に仮説的な質問ですが、まだコードが書かれていません。違いがある場合は、最悪の場合を想定して回答してください。 – Hackworth

答えて

3

[シングルスレッドプログラムの場合]イベントA、B、Cをこの順序で起動すると、毎回同じ順序で処理されますか?

はい。イベントを発生させることは、メソッドを呼び出す複雑な方法です。私は方法A()B()を呼び出してから、C()場合、彼らはその順序で実行されます、

単一のスレッドで

:だから、と同等ですか?

もちろんです。

+0

あなたは良い点を作っています。単一のスレッド上では、イベントは(通常は)ユーザがトリガした関数呼び出しです。ユーザーがこれを行うと、この関数を呼び出します。そして、彼らは常に彼らが呼び出される順序で実行されます。複数のスレッドを追加すると、面白いことになります。イベントは、スレッドの呼び出しによって呼び出される順序で常に実行されます。 2つの異なるスレッドが同じイベントを発生させた場合、ロック/ブロッキングコードが存在して一度に1つのインスタンスしか許可されない限り、スレッドごとに1つずつ同時に実行されます。 – Nevyn

関連する問題