簡體   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