所以最後我設法創建了一個工作的BackgroundWorker。WPF mvvm backgroundworker UI顯示不同的結果
我使用ReportProgress方法來更新UI元素以這樣的方式
bw.ReportProgress(1, node);
bw.ReportProgress(2, connection);
bw.ReportProgress(3);
bw.ReportProgress(4, system);
當連接是模型對象,這是我的進步方法:
void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (e.ProgressPercentage == 1) //update nodes
{
this.Network.Nodes.Add((NodeViewModel)e.UserState);
}
if (e.ProgressPercentage == 2) //update connections
{
this.Network.Connections.Add((ConnectionViewModel)e.UserState);
}
if (e.ProgressPercentage == 3)
{
this.Network.Connections.Clear();
this.Network.Nodes.Clear();
}
if (e.ProgressPercentage == 4)
{
MainNet.Systems.Add((Common.Model.System)e.UserState);
}
}
我有多個對象更新,所以我用百分比作爲過濾器。
我得到不同的結果每次我運行代碼的時候,就好像一些數據是不正確的UI
UI的正確形式呈現:
不糾正:
你能否提供更多關於如何調用ReportProgress()的細節? – Slugart
這是一個競賽條件嗎? –
@GarryVass什麼是比賽條件? Slugart - 它在上面的主要信息,這是所有'ReportProgress'調用,我也有其他電話,現在不適合添加它們 – Yogevnn