2010-11-03 2 views
0

Je suis nouveau à MVVM et j'ai écrit une petite application pour tester les eaux et se familiariser avec le modèle. La fonction principale de mon application prend trop de temps à ne pas avoir une sorte de feedback de l'utilisateur que le processus se poursuit le long. Quelle serait la méthode recommandée pour placer l'appel dans un fil séparé et fournir des commentaires pour une barre de progression? Le code ViewModel pour la fonction est ci-dessous. Merci pour l'aide.Multi-Threading/Commentaires utilisateur dans 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); 
    } 

Répondre

0

Je ne suis pas tout à fait sur MVVM versé multi-threading encore, mais ce lien semble faisables tout: WPF Multithreading: Using the BackgroundWorker and Reporting the Progress to the UI. maintenant, ce que je voudrais essayer est quelque chose comme ceci:

worker.DoWork += delegate(object s, DoWorkEventArgs args) 
{ 
    Data = RetrieveData.GetPartData(SelectedTeam, SelectedYear).DefaultView; 
}; 
+0

C'est à peu près ce que j'ai fini par faire. Je ne vois pas pourquoi cela va à l'encontre de MVVM mais je suis toujours ouvert aux opinions. – PlTaylor