2011-08-04 4 views
1

Quelle est la bonne pratique pour implémenter MMVM avec les services WCF? Le modèle View communiquera avec le service. Disons donc dans une vue que j'ai 3-4 modules d'affichage de données. Toutes ces informations pour les modules proviennent de différents appels de service WCF. Si je fais ceci de manière synchrone, j'ai le sentiment que les données dans le modèle de vue prendront du temps à charger.MMVM Light utilisant WCF de manière asynchrone

Je souhaite effectuer les appels pour toutes ces méthodes de service de manière asynchrone sans attendre le retour du premier appel. Quelle est la bonne façon de faire cela?

Répondre

1

Je pense que la meilleure façon est d'appeler le service de manière asynchrone et attribuer une valeur sur la méthode complète, comme:

class TestViewModel : ViewModelBase 
{ 
    private ObservableCollection<string> data; 

    public ObservableCollection<string> Data 
    { 
     get { return data; } 
     set 
     { 
      if (value == data) return; 
      data = value; 
      RaisePropertyChanged("Data"); 
     } 
    } 

    public TestViewModel() 
    { 
     GetDataClient proxy = new GetDataClient(); 

     System.EventHandler<GetDataCompletedEventArgs> Client_GetDataCompleted = null; 
     Client_GetDataCompleted = (s, e) => 
     { 
      if (e.Error == null && e.Result != null) 
      { 
       Data = new ObservableCollection<SelectionItem<string>>(e.Result));      
      } 

      proxy.GetDataCompleted -= Client_GetDataCompleted; 
     }; 

     proxy.GetDataCompleted += Client_GetDataCompleted;    
     proxy.GetDataAsync();    
    } 
} 
Questions connexes