我們有一個根據MVVM模式構建的應用程序。在不同的時間,我們啓動任務去數據庫檢索數據,然後填充一個ObservableCollection,WPF控件綁定到該數據。C#,MVVM,任務和UI線程
我們有點困惑,當我們填充ObservableCollection時,我們在任務線程上這樣做,而不是UI線程,但UI仍然更新/行爲正確。我們期待一個錯誤,並且必須更改代碼以在UI線程上填充集合。
這是一個危險的情況,我們是否應該在UI線程上填充?
代碼來獲取數據:
Task.Factory.StartNew(() =>
UiDataProvider.RefreshForwardContractReport(fcrIdField.Value)
)
.ContinueWith(task => {
if (task.Result.OperationSuccess)
{
// This updates the ObseravableCollection, should it be run on UI thread??
RefreshReport(task.Result.OperationResult);
}
});
如果從數據庫中檢索數據比在UI線程上花費時間要少,因爲它會拖累或凍結屏幕,這種流派不是一個好用戶經驗。你應該在另一個線程上完成這項任務。 – Vishal
簡單的解決方案。檢查你正在使用的線程。沒有任何需要承擔任何事情。 – Will