日期:2014-05-17  浏览次数:20800 次

定时器如何通知主线程?
void main_thread()
{
  tmr.start();

  //执行代码
  while(条件)
  {
  ;

  }

}

void tmr_Elapsed(object sender, timers ElapsedEventArgs e)
{
  count++;

  if(count > 3)
  {
  tmr.stop();

  }
}


想实现的就是计数大于3以后。中止主线程。如何实现?

------解决方案--------------------
如果你这个定时器就在主线程,那就直接调用主线程中的函数或变量,如果是其他线程,用委托去通知,google“C# 线程委托”
------解决方案--------------------
就if(count > 3)
{
tmr.stop();
mainThread.Abort()
}

就可以了啊
------解决方案--------------------
如果定时器的作用仅仅是关闭线程的话,建议你这么做

bool cancelThread = false;
void main_thread()
{
tmr.start();

//执行代码
while(!cancelThread)
{
  

}
tmr.stop();
}

void tmr_Elapsed(object sender, timers ElapsedEventArgs e)
{
count++;

if(count > 3)
{
cancelThread = true;

}
}

尽量保持程序本身输入输出的统一,有助于阅读和理解代码。