我試圖做一個計時器的東西在一個循環中,定時器完成其工作後,應用程序啓動的循環另一個輪阻塞主線程。但是因爲我不知道如何在定時器運行時要求主線程停止運行,主線程立即進入下一個轉向。要在一個定時器運行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();
內部的代碼,但在代碼運行到監視器計時器這給了我一個例外:對象的同步方法被調用來自一個不同步的代碼塊。
有沒有解決方法?或者我可以用其他方式實現我的目標?
謝謝!
這是什麼類型的應用程序?一個命令行應用程序?的WinForms? WPF?其他?如果你想讓你的主線程阻塞,那你爲什麼還需要另一個線程呢? –
對不起,我只使用Java,但這看起來非常類似於我在那裏的問題 - 在java中,我將一個synchronized()塊圍繞着Monitor.enter()... C#是否有類似的構造? –
WindForms。例如,代碼行A,Timer.Start(),代碼行B.我希望應用程序只能在完成定時器運行時纔開始在B行運行。 –