barre de progression et le backgroundworker en C#
Je travaille actuellement sur un projet qui a besoin de consommer une grande quantité de données de services web,
Il est de la classe du service de l'envoi date d'entrée sur le serveur et de récupérer le résultat,
en raison de ce processus prend beaucoup de temps, il est nécessaire pour l'utilisateur combiné progressbar et backgroundworker pour montrer à l'utilisateur le processus de pourcentage. J'ai de navigation tout à fait quelques exemple de code sur ce sujet, mais ne pouvait toujours pas à comprendre la meilleure façon de le faire. Voulez-vous s'il vous plaît aider,
Mon code est le suivant,
private MyCollection[] callWebService(string[] Inputs, string method)
{
List<string> results = new List<string>();
string fiel dNames = ""; //todo - fix this if nothing left in loop
int sizeOfArray = 500;
for (int i = 0; i < Inputs.Length; i = i + sizeOfArray)
{
string[] outputRecords;
int errorCode;
string errorString;
string[] thisFiveHundred = createSubArray(Inputs, i, sizeOfArray);
iq.NameValuePair[] namevaluepairs = new iq.NameValuePair[0];
fieldNames = iqOfficeWebservice.BatchStan(method, thisFiveHundred, null, "", out outputRecords, out errorCode, out errorString);
results.AddRange(outputRecords);
}
results.ToArray();
IAddress[] formattedResults = convertStringsToInputs(fieldNames, results);
return formattedResults;
}
InformationsquelleAutor Jian_H | 2012-07-24
Vous devez vous connecter pour publier un commentaire.
Informations supplémentaires peuvent être trouvées ici.
En dehors de la mise en œuvre technique dans WPF ou Winforms, par exemple, est un aspect essentiel à prendre en compte.
Si non, vous êtes probablement pas en mesure de prédire correctement le temps que le service web aura besoin. Cela dépendra de divers facteurs, vous ne pouvez pas influence (par exemple, la charge du serveur, le trafic réseau, ...). Dans ce cas, une barre de progression n'est pas recommandé, car il donnera à l'utilisateur une expérience étrange.
Ensuite, vous avez des options comme l'affichage d'un texte d'information que la demande peut prendre quelques minutes et l'affichage d'un progrès avec un
IsIndeterminate
drapeau (WPF) pour montrer le progrès continu de la rétroaction. Un sandhour curseur n'est pas une option, car vous êtes en utilisant un thread d'arrière-plan.Une alternative est de briser la grande demande en parties plus petites pour lesquelles vous pouvez signaler des progrès.
Je viens de mettre ensemble une variation de l'Adil de la réponse qui encapsule le travail et les mises à jour, ainsi qu'une bonne détacher des événements et à l'aliénation du travailleur. Veuillez upvote Adil réponse si vous upvote mine.