MVVM中的多线程/用户反馈
问题描述:
我是MVVM的新手,已经写了一个小应用程序来测试水域并熟悉模式。我的应用程序的主要功能需要很长时间才能得到某种用户反馈,而这个过程还在继续。将呼叫置于单独的线程并为进度条提供反馈的建议方式是什么?该函数的ViewModel代码如下。谢谢您的帮助。MVVM中的多线程/用户反馈
public DataView Data
{
get
{
return resultsView;
}
set
{
if (value == resultsView)
{
return;
}
resultsView = value;
RaisePropertyChanged("Data");
}
}
private void SetData()
{
Data = RetrieveData.GetPartData(SelectedTeam, SelectedYear).DefaultView;
}
public RelayCommand GetData
{
get;
private set;
}
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
// Initializers for other part of ViewModel
// Teams = RetrieveData.GetTeams();
// Years = RetrieveData.GetYears();
GetData = new RelayCommand(SetData);
}
答
我不完全熟悉的MVVM多线程还,但这种联系似乎很做,能够:WPF Multithreading: Using the BackgroundWorker and Reporting the Progress to the UI. 现在,我会尝试是这样的:
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
Data = RetrieveData.GetPartData(SelectedTeam, SelectedYear).DefaultView;
};
也就是说几乎是我最终做的。我不明白为什么这会违反MVVM,但我仍然愿意接受。 – PlTaylor 2010-11-05 11:29:50