3
A
回答
7
WPF正在使用分派器,因此一切都在一個UI線程上工作,但具有切換類型併發性。當你更新一些依賴對象的屬性時,它實際上會在調度器隊列中發佈一個新的作業。當該作業運行時,它將在UI線程上運行並正確更新控件。 但是,如果您嘗試直接從後臺線程訪問控件,則會收到異常。
由於此實現,存在某些邊緣情況。例如。即使你在UI線程上更新了道具,你也不能指望控件會同步更新它以反映你的變化。所以,如果你有XAML這樣的:
<TextBox x:name="tb" Text="{Binding Text"}/>
而且這樣的代碼:
var model = new { Text = "aaa" };
tb.DataContext = model;
model.Text = "bbb";
Debug.Assert(tb.Text == "bbb");
斷言可能會失敗,因爲更新可以通過調度員進入下一個任務。並且它不會被更新,直到這個當前的調用結束並且控制返回給調度員。
0
是的。實際上,使用WPF數據綁定的主要優點之一是使實現這種確切場景變得更簡單。
相關問題
- 1. WPF數據綁定線程安全性?
- 2. 線程安全,列表,綁定和WPF
- 3. 從線程更新數據綁定數據表安全嗎?
- 4. WPF DataTemplate的安全數據綁定
- 5. 線程安全問題試圖跨線程數據綁定
- 6. java線程安全:線程安全嗎?
- 7. 如何使對象綁定到WPF控件線程安全
- 8. WPF DataBinding線程安全
- 9. 從另一個線程加載數據,線程安全嗎?
- 10. 在java中自定義數據結構線程安全嗎?
- 11. 從非UI線程更新數據綁定對象時的線程安全性(WPF/Silverlight)
- 12. WPF多線程綁定MVVM
- 13. 線程和WPF的綁定
- 14. Spring mongoTemplate線程安全嗎?
- 15. Lparallel.queue線程安全嗎?
- 16. BoxClient線程安全嗎?
- 17. EventHubClient.SendBatchAsync - 線程安全嗎?
- 18. .NET:JsonMediaTypeFormatter線程安全嗎?
- 19. multiset equal_range線程安全嗎?
- 20. pip線程安全嗎?
- 21. com.google.cloud.datastore.Datastore線程安全嗎?
- 22. WNetGetResourceInformation線程安全嗎?
- 23. qsort線程安全嗎?
- 24. work_queue線程安全嗎?
- 25. .NET DateTime線程安全嗎
- 26. DynamoDBContext線程安全嗎?
- 27. 在Python線程安全嗎?
- 28. java.lang.reflect.Method線程安全嗎?
- 29. HttpContext.Current.Cache線程安全嗎?
- 30. UIFont線程安全嗎?
但值得注意的是,ObservableCollection集合修改通知是_not_線程安全的(集合更新需要手動委託回UI線程)。 –