2009-05-23 7 views
1

Est-il possible d'afficher un ProgressBar pour afficher la progression d'un appel de service Web? J'utilise un webservice qui appelle une base de données SQL et renvoie, à la demande, une liste des données demandées.WPF ProgressBar pour Webservice Appel

Code Webservice

public List<LocationUpdate> GetAllLocationsByUserID(int UserID) 
    { 
     MainframeConnectionDataContext db = new MainframeConnectionDataContext(); 
     var validLocations = from query in db.LocationUpdates select query; 
     return validLocations.ToList(); 
    } 

Code client

void Window1_Loaded(object sender, RoutedEventArgs e) 
    { 
     dg_sql_data.ItemsSource = CMainFrameConnection.GetAllLocationsByUserID(0); 
    } 

Actuellement, il faut environ 5-10 secondes avant que les données sont chargées.

Des idées?

  • RAYT

Répondre

4

Une barre de progression pourrait ne pas être appropriée ici que vous ne pouvez pas dire sans doute à quel point par l'opération. Il pourrait être plus approprié d'afficher une animation de «chargement» quelconque.

par exemple. quelques exemples d'animations que vous pouvez utiliser ici http://www.ajaxload.info/

EDIT: Comme le souligne Dreas, le réglage IsIndeterminate est un bon moyen de gérer cela.

+0

Bonne idée, va dans la bonne direction, mais je pense qu'une barre de progression devrait être possible si j'appelle le webservice asynchrone. –

+1

Oui, il est certainement possible d'afficher une barre de progression et de l'animer lors d'un appel asynchrone, mais le problème est que parce que vous ne savez pas jusqu'où l'opération se déroule, vous ne pouvez pas préciser la barre de progression. Vous pouvez simplement boucler l'animation de la barre de progression afin qu'elle se remplisse puis se vide, puis se remplisse de nouveau pour indiquer que quelque chose se passe. –

+3

dans ce cas, il suffit de définir IsIndeterminate = "True" –