我的 .NET 后台工作程序中运行了一个 while 循环。我想在 Timers.Timer 达到 0 时结束循环。
问题是,由于我在另一个线程(后台工作人员)中工作,我的计时器必须在同一个线程中实例化。所以我不能设置任何私有布尔timer_Elapsed。我也不知道如何提供布尔 thro 事件的参考。
代码示例:
private bool timer_Elapsed = false;
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
Set_Timer(timer);
timer.Start();
while(timer_Elapsed) //Has to be a boolean that indicates if timer elapsed
{
this.Do_Proces();
}
}
private void Set_Timer(System.Timers.Timer timer)
{
timer.Interval = 200;
timer.Elapsed += new ElapsedEventHandler(timer_ElapsedEvent);
}
private void timer_ElapsedEvent(object source, ElapsedEventArgs e)
{
timer_Elapsed = true; //I can't set my private boolean since it got instantiated in another thread
}
代码中的特殊问题。我是这种东西的新手。有什么建议么?提前致谢
编辑:澄清一下,我希望 Do_Proces() 运行 200 毫秒,当那个时间过去时,我希望它停止。当它在 200 毫秒后停止时,我想用 backgroundWorker 中生成的数据更新 GUI。然后检查用户是否希望进程停止,如果不是,我希望它再次运行。我使用计时器,因为线程必须重新启动很多,这也会影响主线程,影响用户体验不好。