Pergunta

Eu tenho o abaixo exceção de extensão para o meu em casa Winform App. Meu problema é que eu recebo um erro generic GDI+ em ss.save("C:\\HelpMe.jpg", ImageFormat.Jpeg);

Não é todo tempo que ele vai trabalhar e, em seguida, erro fora. Às vezes ele vai trabalhar um par de vezes em uma linha.

É este um "bloqueio" a questão, possivelmente? O que mais devo olhar e / ou estou fazendo errado.

Eu chamo isso como assim ->


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);
        }
    }
Foi útil?

Solução

Isso geralmente é porque:

  1. o diretório de destino não existe
  2. o nome do arquivo destino já está em uso
  3. o nome do arquivo alvo é realmente um diretório
  4. o usuário não tem acesso a gravação para o arquivo de destino

... etc ...

Essencialmente, este é geralmente causada por GDI não ser capaz de criar / gravar o arquivo. BTW, em Vista você não tem acesso de gravação para C: \

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top