VB.NET:イベントハンドラがなくてもイベントが発生しますか?


Answers

私自身の答え:

VB.NETでは、イベントを受信するハンドラがない場合、イベントは発生しません。

イベントを発生させるコードが関数の結果を渡し、イベントハンドラがイベントを処理するように設定されているときにのみ関数が実行されるような小さな実験を行いました。

RaiseEvent Report(GetMyString())

つまり、ハンドラが実際に存在しない限り、上記のGetMystring関数が呼び出されないということです。

Question

いくつかの大きなXMLファイルをダウンロードし、調べて保存するクラスがあります。 時々私はUIに何が起こっているか教えてもらいたいが、クラスを使用してイベントを無視することもある。 だから私はこのようなコードを十数箇所に配置しています:

RaiseEvent Report("Sending request: " & queryString)

RaiseEvent Report("Saving file: " & fileName)

RaiseEvent Report("Finished")

私の質問はこれです - 何も聞いていない場合、これらのイベントは私のコードを遅くするでしょうか? 彼らも発砲するだろうか?




REALの質問が「時間を節約するために、イベントを発生させる前にイベントにハンドラがあることを確認する必要がありますか? 。 。 。 答えは「いいえ」です。これを行うことで何も得られません。

C#では、nullのイベントをチェックせずにハンドラが登録されていない場合、NullReferenceExceptionが発生します。