[英]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.