Aktualizacja obrazu okna WPF z menuitem, ale nie w pętli while

Dobra, to jest prawdziwy drapacz głowy:

Jeśli wybiorę menu, które powoduje, że obraz, który tworzy całe okno (writeableBitmap), aby narysować na nim kilka pikseli, robi to i wyświetla się poprawnie.

Jeśli jednak dodam pętlę while (powiedzmy na 5 pętli) do tej samej metody, rysunek na mapie bitowej NIE WYŚWIETLA dopóki pętla nie zostanie ukończona, a następnie 5-ta przerysowana bitmapa zostanie poprawnie wyświetlona.

Czy więc istnieje jakieś „automatyczne odświeżanie”, które dzieje się w oknie, gdy wybrano menu, ale jest ono pomijane w pętli while?

Więcej szczegółów. Działa to dobrze (przynosi „czysty” obraz, rysuje na nim kilka rzeczy, wyświetla go):

// This brings in a 'clean' image
writeableBitmap = new WriteableBitmap(CleanVegMap);
image.Source = writeableBitmap;
// This makes a bunch of draws on the bitmap
DrawDinos2d();

To jednak „odchodzi” na 10 sekund, a następnie wyświetla tylko ostatni (tj. 5) obraz:

int z = 0;
while (z < 5){
z++;
   // This brings in a 'clean' image
   writeableBitmap = new WriteableBitmap(CleanVegMap);
   image.Source = writeableBitmap;
   // This makes a bunch of draws on the bitmap
   DrawDinos2d();
}

Nowy pomysł: czy jest możliwe, że 5 „narysowanych” map zapisu jest buforowanych w pamięci, w jakiś sposób przez system?

Próbowałem użyć Dyspozytora (jak poniżej):

                Dispatcher.Invoke((Action)delegate
            {               
                writeableBitmap = new WriteableBitmap(CleanVegMap);
                image.Source = writeableBitmap;
                DrawDinos2d();
            });

To samo (znika na 10 sekund, a następnie wyświetla tylko ostatni obraz).

Kolejna wskazówka: po prostu umieściłem MessageBox w pętli na dole każdej pętli i, jak podejrzewam, „poprawił” poprawnie narysowany ekran. Jakoś:

 System.Windows.MessageBox.Show("Glarp!");

to wywołanie „obudziło” system. Znowu jakieś pomysły?

questionAnswers(1)

yourAnswerToTheQuestion