この
Public Class libMail
Private WithEvents bw As New BackgroundWorker
Public Sub BackgW()
bw.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles bw.DoWork
SendMail("Subject", "SendingMail")
End Sub
Public Shared Function CheckForInternetConnection() As Boolean
Try
Return My.Computer.Network.Ping("www.google.com")
Catch
Return False
End Try
End Function
Public Function SendMail(subject As String, msg As String) As String
Try
Select Case CheckForInternetConnection()
Case True
Dim smtpServer As New SmtpClient
Dim eMail As New MailMessage()
smtpServer.UseDefaultCredentials = False
smtpServer.Credentials = New System.Net.NetworkCredential("YourMail", "yourPassword")
smtpServer.Port = 587
smtpServer.EnableSsl = True
smtpServer.Host = "smtp.gmail.com"
eMail = New MailMessage()
eMail.From = New MailAddress("yourMail")
eMail.To.Add("MailToSend")
eMail.Subject = subject
eMail.IsBodyHtml = False
eMail.Body = msg
smtpServer.Send(eMail)
Return "SENT"
End Select
Return Nothing
Catch ex As Exception
Return Nothing
End Try
End Function
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles bw.RunWorkerCompleted
'do some work when is over
End Sub
End class
は、「私はスレッドとしてメール送信を実行しようとした
Using l As New libMail
l.BackgW()
'CLOSE FORM
End Using
それを呼び出す試してみてください。これにより、応答性の問題が解決され、ダイアログはすぐに終了します。しかし、次のような断続的なエラーが発生します。「発生したエラー(SendEmail):ウィンドウハンドルの作成中にエラーが発生しました。スレッドがダイアログで宣言され、スレッドが完了する前にダイアログが閉じられているため、これが原因であるかどうかはわかりません。 –