2010-11-03 2 views
0

Я новичок в MVVM и написал небольшое приложение для тестирования воды и ознакомления с рисунком. Основная функция моего приложения занимает слишком много времени, чтобы не иметь каких-либо отзывов пользователей, что процесс продолжается. Каким будет рекомендуемый способ разместить вызов в отдельном потоке и предоставить обратную связь для индикатора выполнения? Код функции ViewModel для этой функции приведен ниже. Спасибо за помощь.Multi-Threading/User Feedback в 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); 
    } 

ответ

0

Я не полностью разбирается на 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; 
}; 
+0

То есть в значительной степени то, что я закончил делать. Я не понимаю, почему это противоречит MVVM, но я все еще открыт для мнений. – PlTaylor