各位大侠们,求助下timer问题,
我写了个类:
public class DBConnection
{
System.Timers.Timer aTimer = new System.Timers.Timer();
public DBConnection(double second)
{
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = second;
aTimer.Enabled = true; GC.KeepAlive(aTimer);}
void OnTimedEvent(object sender, ElapsedEventArgs e)
{
receive();
}
public void receive()
{
console.writeline(datetime.now.tostring());
}
}我在另外的类里调用并改变定时时间,为什么定时的时间没有变呢???我传入20000秒,但是程序还是30000秒执行一次,这个怎么弄哦???请教大家。
我写了个类:
public class DBConnection
{
System.Timers.Timer aTimer = new System.Timers.Timer();
public DBConnection(double second)
{
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = second;
aTimer.Enabled = true; GC.KeepAlive(aTimer);}
void OnTimedEvent(object sender, ElapsedEventArgs e)
{
receive();
}
public void receive()
{
console.writeline(datetime.now.tostring());
}
}我在另外的类里调用并改变定时时间,为什么定时的时间没有变呢???我传入20000秒,但是程序还是30000秒执行一次,这个怎么弄哦???请教大家。
代码就这些~~?其他地方改变了这个值?
代码改成这样,可以通过public class DBConnection
{
System.Timers.Timer aTimer = new System.Timers.Timer();
public DBConnection(double second)
{ aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = second;
aTimer.Enabled = true;
GC.KeepAlive(aTimer);
}
void OnTimedEvent(object sender, ElapsedEventArgs e)
{
receive();
}
public void receive()
{
System.Console.WriteLine(System.DateTime.Now.ToString());
}
public void SetInterval(double second)
{
aTimer.Interval = second;
}
}
//调用
DBConnection db = new DBConnection(1000);
db.receive();
db.SetInterval(20000);
db.receive();
//结果
2010/7/26 23:49:11
2010/7/26 23:49:12
2010/7/26 23:49:13
2010/7/26 23:49:14
2010/7/26 23:49:15
2010/7/26 23:49:16
2010/7/26 23:49:17
2010/7/26 23:49:18
2010/7/26 23:49:19
2010/7/26 23:49:19
2010/7/26 23:49:21
2010/7/26 23:49:23
2010/7/26 23:49:25
2010/7/26 23:49:27
2010/7/26 23:49:29