GDI + общая ошибка на скриншоте - PullRequest
0 голосов
/ 10 сентября 2009

У меня есть нижеприведенное расширение для моего собственного приложения Winform. Моя проблема в том, что я получаю ошибку generic GDI+ на ss.save("C:\\HelpMe.jpg", ImageFormat.Jpeg);

Это не каждый раз, как это будет работать, а затем ошибка. Иногда это будет работать пару раз подряд.

Возможно, это проблема с блокировкой? Что еще я должен смотреть и / или делать неправильно.

Я так называю ->


catch (Exception ex)
        {
            ex.LogError(HUD.ShellForm);
        }

public static void LogError(this Exception exception, DevExpress.XtraEditors.XtraForm whichForm)
    {
        GetDesktopImage(whichForm);
        SendExceptionMail(exception);

        ExceptionMessageBox box = new ExceptionMessageBox(exception);
        box.Show(whichForm);
    }

    private static void SendExceptionMail(Exception exception)
    {
        SmtpClient smtpClient = new SmtpClient("MailServer");

        MailMessage message = new MailMessage
            {
                From = new MailAddress("MATRIX@anEmail"),
                Subject = "MATRIX Application Error",
                Body = exception.Message
            };

        Attachment attachment = new Attachment(@"C:\\HelpMe.jpg");
        message.Attachments.Add(attachment);

        message.To.Add("Developer@anEmail");
        message.To.Add("HelpDesk@anEmail");
        smtpClient.Send(message);
    }

    ///<summary>
    /// Grabs a screen shot of the App and saves it to the C drive in jpg
    ///</summary>
    private static void GetDesktopImage(DevExpress.XtraEditors.XtraForm whichForm)
    {
        Rectangle bounds = whichForm.Bounds;

        using (Bitmap ss = new Bitmap(bounds.Width, bounds.Height))
        using (Graphics g = Graphics.FromImage(ss))
        {
            g.CopyFromScreen(whichForm.Location, Point.Empty, bounds.Size);
            ss.Save("C:\\HelpMe.jpg", ImageFormat.Jpeg);
        }
    }

1 Ответ

1 голос
/ 10 сентября 2009

Это обычно потому что:

  1. целевой каталог не существует
  2. имя целевого файла уже используется
  3. имя целевого файла на самом деле является каталогом
  4. пользователь не имеет доступа для записи в целевой файл

... и т.д ...

По сути, это обычно вызвано тем, что GDI не может создать / записать файл. Кстати, в Vista у вас нет прав на запись в C: \

...