none
請問各位大大如何解決Mail夾帶檔案時連按兩次BUTTON所造成的GDI+的泛用型錯誤呢? RRS feed

  • 問題

  • 請問各位大大:

     

    我在VB 2008 WINForm中有段程式碼如下: 當我連續按了兩次的Button1時會產生GDI+錯誤 請問我該如何解才不會連按兩次BUTTON1產生GDI 錯誤

     Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

     If EMailTo = "" Then
                Try
                    Dim mails As String = "  " & Trim(EMailFrom) & " "
                    Dim mailscc As String = "" & Trim(EMailToS) & " "
                    Dim smtpserver As New SmtpClient()
                    Dim mail As New MailMessage()
                    smtpserver.Credentials = New Net.NetworkCredential("user@****.com", "pw")
                    smtpserver.Port = 25
                    smtpserver.Host = "mail.****.com"
                    mail = New MailMessage()
                    mail.From = New MailAddress(UsrM)
                    mail.To.Add(mails)
                    mail.CC.Add(mailscc)
                    mail.Subject = " TPE " & U1.Text & " 請假單,請假單號 " & tempSeqNO & ",請假日期 From " & BDD & " TO " & EDD & " 共 " & Tdays & " 天 " & ATimes & " 小時," & UserCName & "已經同意代理 "
                    mail.Body = "" & Remark & ""
                    mail.Attachments.Add(New Attachment("D:\test.jpg")) '因附加此圖檔當按Button2次時造成GDI錯誤
                    smtpserver.Send(mail)
                    MsgBox("Mail Sent")
                Catch ex As Exception
                    Close()
                End Try
            Else

                Try
                    Dim mails As String = "  " & Trim(EMailTo) & " "
                   Dim mailscc As String = "" & Trim(EMailToS) & " "
                    Dim smtpserver As New SmtpClient()
                    Dim mail As New MailMessage()
                    smtpserver.Credentials = New Net.NetworkCredential("user@****.com", "pw")
                    smtpserver.Port = 25
                    smtpserver.Host = "mail.****.com"
                    mail = New MailMessage()
                    mail.From = New MailAddress(UsrM)
                    mail.To.Add(mails)
                    'mail.CC.Add(mailscc)
                    mail.Bcc.Add("user@****.com")
                    mail.Subject = " TPE " & U1.Text & " 請假單,請假單號 " & tempSeqNO & ",請假日期 From " & BDD & " TO " & EDD & " 共 " & Tdays & " 天 " & ATimes & " 小時," & UserCName & "已經同意代理 "
                    mail.Body = "" & Remark & ""
                    mail.Attachments.Add(New Attachment("D:\test.jpg"))    '因附加此圖檔當按Button2次時造成GDI錯誤
                    smtpserver.Send(mail)
                    MsgBox("Mail Sent")

                Catch ex As Exception
                    Close()
                End Try
            End If

    End Sub

    感謝各位大大

    2015年5月14日 上午 06:28

解答

  • 當Click事件觸發時,先把Button Enabled設為false,最後面再設為true,有幫助嗎...
    2015年5月14日 上午 08:17
  • 當檔案被載入時,檔案會被獨佔,所以不能二次載入。

    要避免此狀況先檢視多載參數,例如 Attachment 允許 Stream ,所以可以將檔案用 FlieStream 讀入後,寫入 MemoryStream ,再關閉 FileStream 後,把 MemoryStream 給 Attachment 當參數即可。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年5月15日 下午 12:48

所有回覆

  • 當Click事件觸發時,先把Button Enabled設為false,最後面再設為true,有幫助嗎...
    2015年5月14日 上午 08:17
  • 一般都是Bitmap儲存的問題, 您可以參考這篇討論的解法:A Generic error occured in GDI+ in Bitmap.Save method

    2015年5月14日 下午 01:40
  • 當檔案被載入時,檔案會被獨佔,所以不能二次載入。

    要避免此狀況先檢視多載參數,例如 Attachment 允許 Stream ,所以可以將檔案用 FlieStream 讀入後,寫入 MemoryStream ,再關閉 FileStream 後,把 MemoryStream 給 Attachment 當參數即可。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年5月15日 下午 12:48