如果您嘗試過這種方案,我想詢問您中的任何人。我在c#中開發了一個Windows應用程序。在主程序(Program.cs)中,我添加了一個線程互斥對象來執行多任務下的多個操作。System.Windows.Forms定時器在主線程上運行時不起作用
//under Program.cs
public static FormOneInstance frmOneInstance;
static void Main()
{
t = new Thread(new ThreadStart(CreateInputOutput));
t.Start();
}
public static void CreateInputOutput()
{
try
{
mutex.WaitOne();
ExecuteManyOperationsHere();
}
finally
{
mutex.ReleaseMutex();
Thread.CurrentThread.Abort(); //Has ThreadAbortException here
t = null;
}
}
public static void ExecuteManyOperationsHere()
{
frmOneInstance =new FormOneInstance(); //this has lot of execution on formLoad that includes ShowSummary()
}
而且我的其他形式FormOneInstance類,我用System.Windows.Forms的定時器
private void timer1_Tick(object sender, EventArgs e)
{
ShowSummary();
}
現在,我想該線程在主和UI分開。 謝謝!
您需要爲這個計時器消息循環......注意,你爲什麼挑選定時器控制檯應用程序,它真的不清楚......什麼代碼' mutex.WaitOne'應該代表。閱讀[MCVE]指導以改進問題可能是個好主意。 –
這不是一個控制檯應用程序。爲什麼需要消息循環? – Juran
互斥鎖是兩個或更多線程同時訪問共享資源的同步機制。我沒有看到多個線程正在使用互斥鎖,而且我也看不到正在同步哪個資源。如果使用timer1_Tick來顯示其他線程的進度/結果,那麼它不太容易。你是否熟悉後臺工作者? – user34660