如何发送的参数传递给System.Timers.Timer的 [英] How to pass the sender parameter to the system.timers.timer

查看:878
本文介绍了如何发送的参数传递给System.Timers.Timer的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你如何通过发送参数到 System.Timers.Timer的在.NET?

How do you pass the sender parameter to the system.timers.timer in .NET?

timer1[timer] = new System.Timers.Timer(interval);
timer1[timer].AutoReset = true;
timer1[timer].Elapsed += new ElapsedEventHandler(datatransferEvent);
timer1[timer].Start();
GC.KeepAlive(timer1[timer]);


private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
    try
    {
        serverreconnected.Stop();
        reconnect(_opcServer);
    }
    finally
    {
        serverreconnected.Start();
    }
}

例如:

System.Threading.Timer timer1;
timer1= new System.Threading.Timer(databaseTrensfer, row, dueTime, interval);

public void databaseTrensfer(object row)
{
    DataRow rowE = (DataRow)row;
}

行传递给参数的函数 databaseTrensfer()

我要的发件人参数传递到事件。

I want to pass the the sender parameter to the event.

在此先感谢。

推荐答案

我喜欢zabulus的方法,但是还存在另一种。创建继承System.Timers.Timer的自己的Timer类,它可以保存任何你想要的。我选择了做基本对象标签属性,因此它可以在其他项目中重复使用。

I like zabulus's method, but there is an alternative. Create your own Timer class that inherits from System.Timers.Timer and it can hold anything you want. I chose to do the basic object Tag property so it can be reused in other projects.

public class MyTimer : System.Timers.Timer
{
    public MyTimer(double interval)
        : base(interval)
    {
    }

    public object Tag { get; set; }
}

MyTimer timer;
void test(object sender)
{
    timer = new MyTimer(1);
    timer.Tag = sender;
    timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
}

void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    MyTimer timer = (MyTimer)sender;
    object tag = timer.Tag;
    // do whatever you want with tag
}

然后调用测试(与任何价值,你想传递)

这篇关于如何发送的参数传递给System.Timers.Timer的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆