send a extra argument in Dispatchertimer.Tick event

扶醉桌前 提交于 2020-01-02 03:00:14

问题


my question is how can i send some arguments in Dispatchertimer.Tick event here is the code: what i wanted to is receive a integer value at dispatcheTimer_Tick

    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);

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

    }

what i wanted to do is something like this

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

    }

how to send a value from a calling point??


回答1:


While there are a number of ways, I find it most convenient to use anonymous methods to close over variables when doing this:

dispatcherTimer.Tick += (s, args) => myControl.Text = DateTime.Now.Second.ToString();

If you have a handful of lines you could also do something more like:

int number = 5;
dispatcherTimer.Tick += (s, args) => 
{
    string value = someMethod();
    string otherValue = DateTime.Now.Second.ToString()
    myControl.Text = value + otherValue + number;
}

If you have more than just a handful of lines then you probably still want another method, but you can use a lambda to call that method:

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

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

This is convenient for both ignoring parameters of the event handler's delegate when you don't need them (I almost never use sender, I pass the actual object myself if I need it so that it's not cast to object first.) as well as adding in additional local variables.




回答2:


If you know a at the time you're attaching the event handler, you can do something like this:

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


来源:https://stackoverflow.com/questions/13256164/send-a-extra-argument-in-dispatchertimer-tick-event

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!