0

我想到了一个问题。假设我想将变量 theVar 传递给下面的事件处理程序声明

new EventHandler<AsyncCompletedEventArgs>(evHandler)

并在下面的定义中接收它:

public void evHandler(object sender, EventArgs e)
{
}

我该如何进行?

4

2 回答 2

2

如果您是编写引发事件的代码的人,Hopkinson 先生在他的回答中说得非常好。您需要一个带有属性的自定义 EventArgs 来表示您希望传递的数据。

但是,如果您只是消费事件而不是提出它,那么您的选择就会更加有限。

但是,由于您预计会从您的事件中接收 AsyncCompletedEventArgs,因此您确实有一个选择:AsyncCompletedEventArgs 的 UserState 属性。这是您在调用最终导致事件被触发的异步方法时提供的属性。它可以是您选择的任何对象。您在调用异步方法时提供它,当方法调用完成时,事件在事件参数属性中将它返回给您。

于 2012-09-09T00:47:38.907 回答
1

定义 EventArgs 的后代

例如

public class MySpecialEventArgs :EventArgs
{
   public int theVar {get; private set;}

   public MySpecialEventArgs(int argVar)
   {
      theVar = argVar;
   }

}

然后,当您引发事件时,将上述事件之一而不是 EventArgs

添加处理程序时,e 将是 MySpecialEventArgs。

于 2012-09-07T22:29:08.807 回答