Anzeigen von Werten innerhalb einer For Schlaufe in der Statuszeile

26/08/2009 - 16:53 von Tamara Mikes | Report spam
Salü alle zusammen

Ich möchte gerne beim durchlaufen einer Schlaufe pro Schlaufendurchlauf
einen Wert anzeigen. Aber offenbar wird mir in der WPF die Anzeige wàhrend
der Ausführung des CodeBehind nicht aktualisiert. Wie kann ich machen, dass
bei jedem Schlaufendurchlauf meine Statuszeile (stbPause) aktualisiert wird
und nicht nur der letzte Wert 9/99 ?

Folgender Code habe ich geschrieben:

//Zeit vertrödenl
for (double i = 0; i < 10; i++) {
for (double x = 0; x < 100; x++)
{
double z = i * x / 2;
stbPause.Content = i.ToString() + "/" + x.ToString();
stbPause.UpdateLayout();
}
}


Vielen lieben Dank für Hinweise welche zur Anzeige führen.
Gruss Tamara
 

Lesen sie die antworten

#1 FrankDzaebel
01/09/2009 - 10:00 | Warnen spam
Hallo Tamara,

Ich möchte gerne beim durchlaufen einer Schlaufe pro Schlaufendurchlauf
einen Wert anzeigen. Aber offenbar wird mir in der WPF die Anzeige wàhrend
der Ausführung des CodeBehind nicht aktualisiert.



Das ist auch in Windows Forms so, denn der Main-Thread
ist quasi blockiert und die Meldungs-Abarbeitung wird
nicht durchlaufen.
Eine Möglichkeit zum Beispiel:

private void button1_Click(object sender, RoutedEventArgs e)
{
for (double i = 0; i < 10; i++)
{
for (double x = 0; x < 1000; x++)
{
double z = i * x / 2;
stbPause.Content = i.ToString() + "/" + x.ToString();
DoEvents(); //stbPause.UpdateLayout();
}
}
}

public static void DoEvents()
{
if (Application.Current != null)
Application.Current.Dispatcher.Invoke(
DispatcherPriority.Background,
new ThreadStart(delegate { }));
}
_____

Ggf. besser, die DoEvents nur alle
~100 - 200 Millisekunden zu durchlaufen.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen