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