頭に浮かんだ質問。変数theVarを以下のイベントハンドラー宣言に渡したいとしましょう
new EventHandler<AsyncCompletedEventArgs>(evHandler)
以下の定義でそれを受け取ります:
public void evHandler(object sender, EventArgs e)
{
}
どうすれば続行できますか?
頭に浮かんだ質問。変数theVarを以下のイベントハンドラー宣言に渡したいとしましょう
new EventHandler<AsyncCompletedEventArgs>(evHandler)
以下の定義でそれを受け取ります:
public void evHandler(object sender, EventArgs e)
{
}
どうすれば続行できますか?
あなたがイベントを引き起こしているコードを書いている人なら、ホプキンソン氏はそれを彼の答えに非常にうまく入れています。渡すデータを表すプロパティを持つカスタムEventArgsが必要です。
ただし、イベントを発生させるのではなく、単にイベントを消費している場合は、オプションがさらに制限されます。
ただし、イベントからAsyncCompletedEventArgsを受信することを期待しているため、AsyncCompletedEventArgsのUserStateプロパティという1つのオプションがあります。これは、最終的にイベントが発生する非同期メソッドを呼び出すときに提供するプロパティです。選択した任意のオブジェクトにすることができます。asyncメソッドを呼び出すときに指定し、メソッドの呼び出しが完了すると、イベントはイベント引数のプロパティでそれを返します。
EventArgsの子孫を定義します
例えば
public class MySpecialEventArgs :EventArgs
{
public int theVar {get; private set;}
public MySpecialEventArgs(int argVar)
{
theVar = argVar;
}
}
次に、イベントを発生させるときに、EventArgsの代わりに上記のいずれかをスローします
ハンドラーを追加すると、eはMySpecialEventArgsになります。