2010-05-12 3 views
3

J'essaie de créer une application qui se connecte à Internet et consomme web services pour chacune de ses opérations. En ce qui me concerne, j'aimerai utiliser async method qui J'utilise déjà pour obtenir une collection de contacts. Je me suis rendu compte que quand je fais la même chose pour les groupes (ce qui signifie obtenir des groupes asynchrones) j'ai des erreurs dans les appels, mais quand j'utilise un appel normal Donc j'ai fait des recherches en ligne et j'ai trouvé que beaucoup de gens ont le même problème.
Certains d'entre eux sont invités à utiliser WCF (pour lequel je ne sais pas prise) .J'aimerais savoir s'il y a une autre façon de surmonter cela. Si non, quelqu'un peut-il me diriger vers une ressource fiable en ligne et m'aider à passer à travers? Merci pour la lecture et l'aide voici mon code:Echec des appels asynchrones multiples sur la méthode webservice dans l'application

public partial class main : Window 
{ 
    //... 
    private static vmcSession session; 
    private MyService service = new MyService(); 
    private contactInfo[] loadedcontact; 
    //.... 

    public main() 
    { 
     InitializeComponent(); 
     //service.addContactCompleted +=new addContactCompletedEventHandler(addContactCompleted); 
     service.getContactsCompleted += new getContactsCompletedEventHandler(getContactsCompleted); 
     service.getGroupsCompleted += new getGroupsCompletedEventHandler(getGroupsCompleted); 
     fillContents(); 
    } 

    private void getGroupsCompleted(object sender, getGroupsCompletedEventArgs e) 
    { 
     try 
     { 
      groupListBox.ItemsSource = e.Result; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.InnerException.Message); 
     } 
    } 

    private void getContactsCompleted(object sender, getContactsCompletedEventArgs e) 
    { 
     try 
     { 
      loadedcontact = e.Result; 
      contactListBox.ItemsSource = loadedcontact; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

    private void addContactCompleted(object sender, addContactCompletedEventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 

    public void fillContents() 
    { 
     displayUserInformation(); 
     loadContacts(); 
     service.getGroupsAsync(session.key, null); 
     //groupListBox.ItemsSource = service.getGroups(session.key, null); 
     cmbSenderIds.ItemsSource = service.getSenderIds(session.key, null); 
     if (cmbSenderIds.Items.Count > 0) 
     { 
      cmbSenderIds.SelectedIndex = 0; 
     } 
     loadGrid(); 


    } 


    public void loadContacts() 
    { 
     service.getContactsAsync(session.key, null); 
    } 



    public void displayUserInformation() 
    { 
     lblName.Content = session.user.firstName; 
     lblEmail.Content = session.user.email; 
     lblCreditValue.Content = Decimal.Ceiling(session.user.balance).ToString(); 

    } 


    public void loadGrid() 
    { 
     try 
     { 
      hitoryGrid.ItemsSource = service.viewMessages(session.key, null).ToList(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    }  

} 
+0

Quelles sont les erreurs? –

+0

le message InnerException était: 'il y avait une erreur lors du traitement asynchrone.Un seul état State est requis pour plusieurs opérations simultanées asynchrones être en cours' merci pour la réponse –

+0

Pouvez-vous poster du code? Appellez-vous SleepAsync? –

Répondre

6

it.There sont 2 résoudre des méthodes avec des appels asynchrones, un avec paramètre supplémentaire unique ID.each de l'appel ID nécessaire, donc je passe nouveau GUID à elle et c'est tout.Merci d'essayer de m'aider

+0

pouvez-vous montrer votre code corrigé, comment il a été résolu? –

Questions connexes