所以最后我设法创建了一个工作的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