Fortschrittsbalken und der backgroundworker-Klasse in C#
Derzeit arbeite ich an einem Projekt, brauchen, verbrauchen große Menge von Daten aus web-services,
Es ist die service-Klasse senden Eingabe Datum an den server und erhalten Sie das Ergebnis,
aufgrund zeitaufwendiger Prozess ist, ist es erforderlich, einen Benutzer kombiniert progressbar und der backgroundworker-Klasse zu zeigen Benutzer den Prozess Prozentsatz. Ich habe das surfen durchaus ein paar Beispiel-code zu diesem Thema, aber noch konnte nicht herausfinden, der beste Weg, es zu tun. Würden Sie bitte helfen,
Mein code ist folgender,
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
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weitere Infos finden Sie hier.
sollten Sie Ihren code schreiben, die liest aus der Datenbank in _DoWork-und update-Fortschritt hängt davon ab, Zeilenanzahl, zum Beispiel. dann bekommen Sie Ihre Daten in _RunWorkerCompleted Veranstaltung. Ersetzen Sie System.Threading.Thread.Sleep(1000); mit dem code
InformationsquelleAutor Adil Mammadov
Abgesehen von der technischen Implementierung in WPF oder Winforms da ist zum Beispiel ein wesentlicher Aspekt zu berücksichtigen.
Wenn nicht, sind Sie wahrscheinlich nicht in der Lage, korrekt vorherzusagen, die Zeit, die die web-service benötigen. Dies ist abhängig von Faktoren, auf die Sie keinen Einfluss hat (wie server-Auslastung, Netzwerk-traffic, ...). In diesem Fall wird ein Fortschrittsbalken wird nicht empfohlen, da es geben dem Benutzer eine seltsame Erfahrung.
Dann haben Sie die Optionen, wie die Anzeige einer text-Informationen, die das in Anspruch nehmen kann Minuten und zeigt eine Fortschrittsanzeige mit einem
IsIndeterminate
- flag (WPF) zu zeigen stetige Fortschritte feedback. Ein sandhour cursor ist nicht eine option, wie Sie einen hintergrund-thread.Alternative ist der Abbau der großen Anforderung in kleinere Teile, bei denen Sie den Fortschritt melden.
InformationsquelleAutor jdehaan
Habe ich gerade zusammen eine variation von Adil Antwort, welches die arbeiten und updates, sowie richtig trennen Ereignisse und die Entsorgung der Arbeiter. Bitte upvote Adil Antwort, wenn Sie upvote mir.
InformationsquelleAutor Enigmativity