繁体   English   中英

在计时器运行C#时阻止主线程

[英]To block the main thread while a timer is running C#

我正在尝试使用计时器循环执行某项操作,并且在计时器完成其工作之后,应用程序会在循环中开始另一回合。 但是因为我不知道如何在定时器运行时要求主线程停止运行,所以主线程会立即转到下一轮。

我做了一些关于锁的事情。

这是循环

for (int i = 0; i < step; i++)
{
    Monitor.Enter(locker);
    //start timer
}

然后是计时器内部的代码

t_tick = (senders, args) =>
{

   if (condition)
   {   
      //do something
   }
   else
   {
      //do something
      Monitor.Exit(AirplaneManager.locker);
      t.Stop();
   }
};
t.Tick += t_tick;
t.Interval = 30;
t.Start();

但是,这在代码在计时器中运行到监视器中时给了我一个例外:对象同步方法是从未同步的代码块中调用的。

有什么解决办法吗? 或者我可以使用其他方式实现目标?

谢谢!

如果希望当前线程在设置的时间跨度内阻塞,则可以仅使用Thread.Sleep(TimeSpan) https://msdn.microsoft.com/zh-cn/library/274eh01d ( v= vs.110) .aspx

您不需要使用其他线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM