首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问一个用计时器控制循环的有关问题,实现了就给分

2012-04-24 
请教一个用计时器控制循环的问题,在线等,实现了就给分private void cycle(){for (i0i100i++){....tim

请教一个用计时器控制循环的问题,在线等,实现了就给分
private void cycle()
{
  for (i=0;i<=100;i++)
  {
  ....
  timer1.Interval = 5000;
  timer1.start();
  }
}

private void timer1_Tick(object sender, EventArgs e)
{
  if (满足某种条件)
  ???
}


我希望的是,满足条件进行下一步循环,或时间到也进行下一步循环,应该怎么写呢?

[解决办法]
楼主的需求不够清楚,如果不满足条件呢,执行什么动作?
[解决办法]
问题说清楚点行么?
 if (满足某种条件) 
{
cycle()
}

把timer1.start.start()从cycle函数中移出来,到别的地方去

[解决办法]
你上面提到的进入下一步循环,具体是做什么?

要不你贴一点代码出来吧,不然弄不明白你具体的需求
[解决办法]
不好意思,楼主,我所在的公司禁了QQ.

你的问题好像并不复杂呀,对你自己的提问多些描述,这样大家才好理解你的意图,不然很难帮到你呢
[解决办法]
感觉你用timer控制是不行的,不知道你用的什么东西接收的数据,socket上是可以设置超时时间的,这个超时5秒也应该是在socket上设的
[解决办法]

C# code
private void cycle() //自定义的函数 {   int[] arrayboudrate = new int[9] { 300,1200,2400,4800,115200,9600,19200,38400,57600};   for (i=0;i  <=100;i++)     {       sp1.BaudRate = arrayboudrate[i1];      //.... //设置串口参数      try      {         sp1.open();//打开串口,开始接收数据         timer1.Enabled=false;//如果正常,时间控件为无效状态         //在这里写代码判断是否接满了你所说的多少位     }     catch     {        timer1.Enabled=true;//发生错误,时间控件启动        timer1.Interval = 5000;           }   }}  private void timer1_Tick(object sender, EventArgs e)  {    cycle();//执行该方法}
[解决办法]

bool iscontinue = false;
private void cycle() //自定义的函数 

int[] arrayboudrate = new int[9] { 300,1200,2400,4800,115200,9600,19200,38400,57600}; 
for (i=0;i <=100;i++)
{

sp1.BaudRate = arrayboudrate[i1]; 
.... //设置串口参数 
try 

iscontinue = false;
timer1.Interval = 5000;
timer1.start();
sp1.open();//打开串口,开始接收数据 
}
catch
{
iscontinue = true;
}
if(iscontinue) continue;
else

if (接收的字符串与协议匹配) 
终止循环 
else 
continue; 

}
}

private void timer1_Tick(object sender, EventArgs e)
{
iscontinue = true;
timer1.stop();
}
[解决办法]
up

热点排行