2011-06-06 5 views
0

Je suis en train de développer une application Windows Phone7 dans laquelle j'ai deux boutons de la barre d'applications lorsque vous cliquez sur permet d'effectuer des appels asynchrones au Web et des rappels sur la réponse Web. Maintenant, mon problème est, si je clique sur un bouton et que l'opération Async se déroule en arrière-plan et pendant ce temps, si je clique sur un autre bouton, les deux rappels s'exécutent, ce qui n'est pas bon pour des raisons évidentes . Quelqu'un pourrait-il m'aider sur la façon de gérer cela ???Gestion des opérations asynchrones dans Windows Phone7

J'ai d'abord pensé à désactiver les autres boutons quand 1 opération asynchrone est en cours. Mais cela ne donne pas une bonne sensation pour l'utilisateur. Alors, quelle sera la meilleure façon de gérer ce problème ??

+0

Vous allez devoir nous donner plus d'informations. Comment exécutez-vous exactement ces opérations asynchrones? Avoir plusieurs opérations asynchrones simultanées est tout à fait possible. Mais comment vous faites cela dépend beaucoup de ce que vous faites. – ColinE

+0

@ColinE Oui, plusieurs opérations asynchrones simultanées sont entièrement possibles. Mais ici, dans mon cas, les deux rappels mettent à jour la même interface utilisateur (voir). Si la vue n'est pas visible, elle peut être mise à jour en arrière-plan. Je pense que je ne vous dérange pas. – nkchandra

Répondre

1

Vous pouvez utiliser une variable Flag et vérifier sa valeur dans la méthode async call complete. En fonction de vos besoins, vous pouvez choisir de mettre à jour ou non la vue.

+0

Merci pour la réponse. Dans ce cas, si je choisis d'aller avec le 2ème clic et que je veux arrêter le 1er appel asynchrone, existe-t-il un moyen d'identifier les opérations asynchrones (en cours de progression) et de les arrêter? – nkchandra

+0

Par ma connaissance limitée il n'y a pas de propriété d'annulation. Nous pouvons toujours utiliser la limite de timeout pour nous séparer après quelques secondes. – kanchirk

0

Je cherchais la même réponse.

J'ai trouvé la solution, si vous initialisez un objet dans un constructeur comme celui-ci, vous obtiendrez plusieurs boucles lorsque vous appelez une fonction de service:

public partial class MainPage : PhoneApplicationPage 
{ 
MovieServiceClient mov; 

public MainPage() 
{ 
mov = new MovieServiceClient(); //Don't do this. 
InitializeComponent(); 

} 
} 

éviter.

Questions connexes