Обновление изображения окна WPF из меню, но не во время цикла
Ладно, это настоящий скребок
Если я выбираю пункт меню, который заставляет изображение, которое составляет все окно (writeableBitmap), рисовать на нем несколько пикселей, он делает это и отображается правильно.
Однако, если я добавлю цикл while (скажем, для 5 циклов) к тому же методу, рисование на растровом изображении не будет отображаться до тех пор, пока цикл не будет завершен, а затем 5-й перерисованный растровый рисунок не будет отображаться правильно.
Итак, есть ли какое-то «автоматическое обновление», которое происходит с окном, когда элемент меню выбран, но пропускается в цикле while?
Подробнее Это отлично работает (приносит «чистое» изображение, рисует на нем какие-то вещи, отображает его):
// This brings in a 'clean' image
writeableBitmap = new WriteableBitmap(CleanVegMap);
image.Source = writeableBitmap;
// This makes a bunch of draws on the bitmap
DrawDinos2d();
Это, однако, «уходит» на 10 секунд и затем отображает только последнее (то есть 5-е) изображение:
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();
}
Новая идея: возможно ли, что каким-то образом система каким-то образом кэширует 5 «нарисованных» writeableBitmaps в памяти?
Пробовал с помощью Dispatcher (как показано ниже):
Dispatcher.Invoke((Action)delegate
{
writeableBitmap = new WriteableBitmap(CleanVegMap);
image.Source = writeableBitmap;
DrawDinos2d();
});
То же самое (уходит на 10 секунд, а затем отображает только последнее изображение.
Еще одна подсказка: я просто помещаю MessageBox в цикл в нижней части каждого цикла, и, как я как-то подозревал, он правильно «моргнул» перерисованным экраном. Как-то:
System.Windows.MessageBox.Show("Glarp!");
этот звонок «разбудил» систему. Опять какие-нибудь идеи?