2013-02-05 21 views
0

我有這樣的代碼:vb.net在發送SMTP形式得到不響應

For i = 0 To DataGridView1.RowCount - 2 
    If send_email(body, DataGridView1.Rows(i).Cells(8).Value.ToString) Then 
     countSentMail = countSentMail + 1 
     System.Threading.Thread.Sleep(2 * 1000) 
     ProgressBar1.PerformStep() 
    End If 
Next i 

Private Function send_email(ByVal body As String, ByVal emailAddress As String) As Boolean 
    Try 
     Dim SmtpServer As New SmtpClient() 
     Dim mail As New MailMessage() 
     SmtpServer.Port = [port] 
     SmtpServer.Host = [ip] 
     mail = New MailMessage() 
     mail.From = New MailAddress([email_from]) 
     mail.To.Add([email_to]) 
     mail.Bcc.Add([email_bbc]) 
     mail.Subject = [subject] 
     mail.Body = body 
     Mail.IsBodyHtml = True 
     SmtpServer.Send(mail) 
     send_email = True 
    Catch ex As Exception 
     send_email = False 
    End Try 
End Function 

和代碼運行形式/應用程序時「沒有響應」,直到發出的所有電子郵件和進度條變得無用。如果我評論發送功能的內容 - 進度條按我的預期工作。有什麼建議麼?

回答

1

對不起,延遲迴復。

是的。增加ProgressBar1

send_email之前要調用send_email使用SmtpClient.Send()這是同步的,等待服務器響應。

您可以使用SmtpClient.SendAsync()代替,它將繼續執行並在後臺等待服務器響應。