Timer.Elapsed事件如何传递参数

时间:2022-08-31 20:34:50
手写了一个Timer倒计时方法,想在倒计时完成后,将一个不为空的实体类
Msg传递给Elapsed的事件内,看了MSDN后,没有找到相关字眼。所以
请问下如何实现.
附上代码

private void TreatmentQueue(Msg m)
{
   System.Timers.Timer T = CreateTimer(double.Parse(m.MsgValue));
   T.Elapsed += new ElapsedEventHandler(SetData);//这里我想把m传递给SetData方法,该如何写呢
   T.AutoReset = false;
   T.Enabled = true;
}

4 个解决方案

#1


帮顶,接分

#2


ElapsedEventHandler 是一个委托,所以你定义的方法必须符合委拖的格式:
public delegate void ElapsedEventHandler (
    Object sender,
    ElapsedEventArgs e
)
想要直接传递参数是不行的,所以可以通过全局变量实现。

#3


引用 2 楼 andy_1027 的回复:
ElapsedEventHandler 是一个委托,所以你定义的方法必须符合委拖的格式: 
public delegate void ElapsedEventHandler ( 
    Object sender, 
    ElapsedEventArgs e 

想要直接传递参数是不行的,所以可以通过全局变量实现。

如果通过全局变量的话,每隔一段时间间隔就要使用这个变量一次,如果我在SetData获取这个变量值的时间超过了Timer的间隔时间,那不是会造成后面来的变量和前面的重叠吗?

#4


 Elapsed事件中的static void mywrite(object source,ElapsedEventArgs e)中的 source  e可以随意  不一定是这个名吧?

#1


帮顶,接分

#2


ElapsedEventHandler 是一个委托,所以你定义的方法必须符合委拖的格式:
public delegate void ElapsedEventHandler (
    Object sender,
    ElapsedEventArgs e
)
想要直接传递参数是不行的,所以可以通过全局变量实现。

#3


引用 2 楼 andy_1027 的回复:
ElapsedEventHandler 是一个委托,所以你定义的方法必须符合委拖的格式: 
public delegate void ElapsedEventHandler ( 
    Object sender, 
    ElapsedEventArgs e 

想要直接传递参数是不行的,所以可以通过全局变量实现。

如果通过全局变量的话,每隔一段时间间隔就要使用这个变量一次,如果我在SetData获取这个变量值的时间超过了Timer的间隔时间,那不是会造成后面来的变量和前面的重叠吗?

#4


 Elapsed事件中的static void mywrite(object source,ElapsedEventArgs e)中的 source  e可以随意  不一定是这个名吧?