2
它是否存在任何通過UI線程(WinForms)執行事件處理程序時正在執行任務(而不是UI)的代碼?如何在執行任務時通過UI線程調用事件處理程序? (C#)
有** Threading.Timer **的回調函數,它的代碼總是從ThreadPool調用。回調可以引發一個事件。但是ThreadPool也可以處理它的處理程序。我訂閱的事件通過UI線程:
//UI
(Action<string>) MyEvent += (string result) =>
{ MyInput.Text += String.Format("server: {0}", result); }; //changes GUI
//The timer's callback, not UI:
MyEvent(result); //exception...
另外,如果一個任務不是通過UI線程調用的,那麼在它之前,我們可以爲全局變量分配UI相關的TaskScheduler(調用UI線程中的'TaskScheduler.FromCurrentSynchronizationContext()')以便稍後訪問此調度程序。 – Mergasov
是的,這是一個很好的觀點。 +1 – CodingYoshi