電子メール メッセージをすばやく送信したいので、スレッド プールを使用します。しかし、スレッドプールを使用して10通のメールを送信するのにかかる時間と、10通のメールを連続して送信するのにかかる時間(for eachループで)を数えますが、時間は同じです。私のコードの問題は何ですか?
私のスレッドプールコード:
private sub mymethod()
addr.Add("first address")
addr.Add("second address")
addr.Add("third address")
addr.Add("tenth address")
ThreadPool.SetMaxThreads(20, 20)
ThreadPool.SetMinThreads(15, 15)
start = Date.Now.TimeOfDay.TotalSeconds
For Each add As Object In addr
ThreadPool.QueueUserWorkItem(AddressOf SendMail, add)
Next
End Sub
Private Sub SendMail(ByVal add As Object)
If add Is Nothing Then
Throw New ArgumentException("Empty arg!!")
End If
Dim client As SmtpClient = New SmtpClient()
client.Host = "smtp.gmail.com"
client.Port = "587"
client.Credentials = New System.Net.NetworkCredential("address", "password")
client.EnableSsl = True
Using Mail As New MailMessage
Mail.Subject = "test"
Mail.To.Add(add)
Mail.From = New MailAddress("address")
Mail.Body = "body"
client.ServicePoint.MaxIdleTime = 1
Try
client.Send(Mail)
Catch ex As SmtpException
Finally
count += 1
SendCompleted()
End Try
End Using
End Sub
Private Sub SendCompleted()
If Me.InvokeRequired Then
Me.Invoke(New Action(AddressOf SendCompleted))
Return
End If
If (count = addr.Count) Then
end_ = Date.Now.TimeOfDay.TotalSeconds
label1.Text = (end_ - start)
End If
End Sub