У меня была довольно проблема с этим. Вот мой код.
int frame = 0;
//This is a wpf button event
private void up_Click(object sender, RoutedEventArgs e)
{
frame++;
LoadPic();
}
private void LoadPic()
{
string fn = @"C:\Folder\image" + (frame % 2).ToString() + ".png";
Bitmap bmp = new Bitmap(302, 170);
bmp.Save(fn);
bmp.Dispose();
//Picebox is a wpf Image control
Picbox.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri(fn));
}
private void down_Click(object sender, RoutedEventArgs e)
{
frame--;
LoadPic();
}
Когда я запускаю программу, открывается окно wpf. Есть две кнопки с событиями, показанными в коде.
Когда я дважды нажимаю кнопку вверх, все работает нормально. Это сохраняет два PNG в местоположениях
"C:\Folder\image0.png" и "C:\Folder\image1.png"
В третий раз, когда я нажимаю кнопку, она должна снова сохраниться в «C:\Folder\image0.png». Вместо этого он выдает исключение «В GDI+ произошла общая ошибка».
У меня была похожая проблема раньше, и я решил ее, добавив эти две строки:
GC.Collect();
GC.WaitForPendingFinalizers();
На этот раз это не сработало.
Picbox.Source = ...
и посмотреть, сможет ли она сохранить ее. Я предполагаю, что изображение по какой-то причине заблокировано этой строкой. - person Karl-Johan Sjögren   schedule 21.09.2013