关于Timer的问题

thycloud 2009-03-17 02:36:51
关于Timer的问题

str 是5秒变一次

System.Timers.Timer aTimer = new System.Timers.Timer(500);
switch(str)
{

case "aa":
aTimer.Elapsed += new ElapsedEventHandler(aaTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;

break;
case "bb":
aTimer.Elapsed += new ElapsedEventHandler(bbTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;
break;
}

private void aaTimedEvent(object source, ElapsedEventArgs e)
{
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
label3.Visible = !label3.Visible;
}

private void bbTimedEvent(object source, ElapsedEventArgs e)
{

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
label4.Visible = !label4.Visible;
}

当变到bb时 aa的事件还在执行 怎么把他停掉?
...全文
110 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenjie820 2011-03-17
  • 打赏
  • 举报
回复
看看16楼的
thycloud 2009-03-17
  • 打赏
  • 举报
回复
16楼 确实厉害 感谢大家 分全给16楼 大家不介意吧
justindreams 2009-03-17
  • 打赏
  • 举报
回复


System.Timers.Timer aTimer = new System.Timers.Timer(500);
aTimer.Elapsed += new ElapsedEventHandler(aaTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;

private void aaTimedEvent(object source, ElapsedEventArgs e)
{
switch(str)
{
case "aa":
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
label3.Visible = !label3.Visible;
break;
case "bb":
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
label4.Visible = !label4.Visible;
break;
}
}



birdlonger 2009-03-17
  • 打赏
  • 举报
回复
switch(str)
{

case "aa":
if (aTimer.Elapsed.GetInvocationList().Length >0 )
{
aTimer.Elapsed -= new ElapsedEventHandler(bbTimedEvent);
}
aTimer.Elapsed += new ElapsedEventHandler(aaTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;

break;
case "bb":
if (aTimer.Elapsed.GetInvocationList().Length >0 )
{
aTimer.Elapsed -= new ElapsedEventHandler(aaTimedEvent);
}
aTimer.Elapsed += new ElapsedEventHandler(bbTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;
break;
}
thycloud 2009-03-17
  • 打赏
  • 举报
回复
case "aa":
//aTimer1.Close();aTimer.Start();
//aTimer.Stop();
// aTimer.Start();

aTimer.Enabled = false;
aTimer.Elapsed -= new ElapsedEventHandler(aaTimedEvent);

aTimer.Elapsed += new ElapsedEventHandler(aaTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;
break;
case "bb":

//aTimer.Stop();
//aTimer.Start();
aTimer.Enabled = false;
aTimer.Elapsed -= new ElapsedEventHandler(aaTimedEvent);
aTimer.Elapsed += new ElapsedEventHandler(bbTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;
break;

依然不行 伤心
thycloud 2009-03-17
  • 打赏
  • 举报
回复
175809646
thycloud 2009-03-17
  • 打赏
  • 举报
回复
“System.Timers.Timer.Elapsed”只能出现在 += 或 -= 的左边
homejiji 2009-03-17
  • 打赏
  • 举报
回复

case "aa":
aTimer.Elapsed += new ElapsedEventHandler(aaTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;

case "bb":
aTimer.Enabled = false;
aTimer.Elapsed -= new ElapsedEventHandler(aaTimedEvent);
aTimer.Elapsed += new ElapsedEventHandler(bbTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;
break;
baiyunyinv 2009-03-17
  • 打赏
  • 举报
回复

private void aaTimedEvent(object source, ElapsedEventArgs e)
{
if(aTimer.Elapsed !=null}
{
aTimer.Elapsed -= new ElapsedEventHandler(bbTimedEvent);
}
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
label3.Visible = !label3.Visible;
}

private void bbTimedEvent(object source, ElapsedEventArgs e)
{
if(aTimer.Elapsed !=null}
{
aTimer.Elapsed -= new ElapsedEventHandler(aaTimedEvent);
} System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
label4.Visible = !label4.Visible;
}

whowhen21 2009-03-17
  • 打赏
  • 举报
回复
timer1.Start();//开始计时;
timer1.Stop();//停止计时
thycloud 2009-03-17
  • 打赏
  • 举报
回复
aTimer.Elapsed -= new ElapsedEventHandler(aaTimedEvent);
也一样不可以
thycloud 2009-03-17
  • 打赏
  • 举报
回复
aTimer.Enabled = false;
加在哪? case "aa": 和 case "bb": 后面
我测试了不行
relive_qiankai 2009-03-17
  • 打赏
  • 举报
回复
.start()
.close()
relive_qiankai 2009-03-17
  • 打赏
  • 举报
回复
.start()
.close()
relive_qiankai 2009-03-17
  • 打赏
  • 举报
回复
.start()
.close()
skison 2009-03-17
  • 打赏
  • 举报
回复

aTimer.Elapsed -= new ElapsedEventHandler(aaTimedEvent);

深海之蓝 2009-03-17
  • 打赏
  • 举报
回复
aTimer.Enabled = false;

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧