SynchronizationContext 提供了一種在特定上下文或位置執行程式碼的方法。它的工作原理是捕獲傳遞給其 Send 或 Post 方法的委託,並在該上下文中呼叫它們。
SynchronizationContext 是每個執行緒中存在的類,可以透過 SynchronizationContext.SetSynchronizationContext 設定或透過 SynchronizationContext.Current 存取。不過,值得注意的是,SynchronizationContext 不一定代表特定的線程,它可以將呼叫委託給各個線程甚至遠端主機。
在 Windows 窗體中,當第一個窗體啟動時,WindowsFormsSynchronizationContext 會安裝在 UI 執行緒上。創建的。此上下文可確保在 UI 執行緒上呼叫傳遞給 Send 或 Post 的委託,這對於操作 Windows 窗體控制項至關重要。
提供的範例程式碼示範如何使用SynchronizationContext從單獨的執行緒操作UI 控制項:
SynchronizationContext originalContext = SynchronizationContext.Current; ThreadPool.QueueUserWorkItem(delegate { string text = File.ReadAllText(@"c:\temp\log.txt"); originalContext.Post(delegate { myTextBox.Text = text; }, null); });
以上是SynchronizationContext 如何確保 .NET 中的執行緒安全 UI 更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!