请问一个用计时器控制循环的有关问题,实现了就给分
请教一个用计时器控制循环的问题,在线等,实现了就给分
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上设的
------解决方案--------------------
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