Ich arbeite in C# und WPF, sehr neu für beide.Wie zeige ich den Fortschritt während einer aktiven Schleife an?
Ich habe eine Schleife, die viele Daten von einer externen Quelle liest. Der Vorgang dauert ungefähr 20 Sekunden und ich möchte dem Benutzer den Fortschritt anzeigen. Ich brauche keine ausgefeilten Fortschrittsbalken, daher habe ich meinen Fortschritt in einem Etikett mit der Bezeichnung "Schritt 1/1000" und dann "Schritt 2/1000" usw. dargestellt.
Mein Code sieht ungefähr so aus dies:
// "count" is the number of steps in the loop,
// I receive it in previous code
String countLabel = "/"+count.ToString();
for (i = 0; i < count; i++)
{
... do analysis ...
labelProgress.Content = "Step "+i.ToString()+countLabel
}
jedoch während dieser Analyse ist der Bildschirm „stecken“ und die Fortschritte zeigen, nicht so voran. Ich verstehe dieses Verhalten aus meiner Vergangenheit in C++, wo ich wahrscheinlich einen separaten Thread hätte, der einen Fortschrittsbalken zeigt, der Benachrichtigungen von der Schleife empfängt, oder irgendeine Art von Repaint/Refresh, oder das Fenster/App dazu zwingt, seine Nachrichtenwarteschlange zu verarbeiten.
Was ist der richtige Weg, um es in C# zu tun? Ich bin nicht auf das Etikett gebunden, so dass, wenn es ein einfaches Statusleiste Popup-Fenster kann ich anstelle diesem Label verwendet es auch groß sein würde ...
Dank
Diese für Sie Hilfe kann , ** 100% getestet ** http://stackoverflow.com/a/42995210/6863414 –