C# 在Dispatchermer.Tick事件中发送额外参数

C# 在Dispatchermer.Tick事件中发送额外参数,c#,wpf,dispatchertimer,C#,Wpf,Dispatchertimer,我的问题是如何在Dispatchermer.Tick事件中发送一些参数 代码如下:我想要的是在dispatcheTimer_Tick接收一个整数值 dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); private void dispatcherTimer_Tick(object sender, EventArgs e) { //.Text = DateTime.Now.Seco

我的问题是如何在Dispatchermer.Tick事件中发送一些参数 代码如下:我想要的是在dispatcheTimer_Tick接收一个整数值

    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);

    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        //.Text = DateTime.Now.Second.ToString();

    }
我想做的是这样的事情

    private void dispatcherTimer_Tick(object sender, EventArgs e,int a)
    {
        //.Text = DateTime.Now.Second.ToString();

    }

如何从调用点发送值???

如果在连接事件处理程序时知道
a
,可以执行以下操作:

int a = 0;
dispatcherTimer.Tick += (sender, e) => 
    {
       /* a is available here */
    };

虽然有很多方法,但我发现在执行此操作时,使用匿名方法关闭变量是最方便的:

dispatcherTimer.Tick += (s, args) => myControl.Text = DateTime.Now.Second.ToString();
如果您有几行代码,您还可以执行以下操作:

int number = 5;
dispatcherTimer.Tick += (s, args) => 
{
    string value = someMethod();
    string otherValue = DateTime.Now.Second.ToString()
    myControl.Text = value + otherValue + number;
}
如果您有不止几行代码,那么您可能仍然需要另一个方法,但您可以使用lambda调用该方法:

int value = 5;
dispatcherTimer.Tick += (s, args) => myRealMethod(someControl, value);

public void myRealMethod(Control someControl, int value)
{
    someControl.Text = value;
}

这对于在您不需要时忽略事件处理程序委托的参数(我几乎从不使用
sender
,如果需要,我会亲自传递实际对象,这样它就不会首先强制转换到
object
)以及添加额外的局部变量都很方便。

谢谢您上次编写的方法帮助了我