0

電子メール メッセージをすばやく送信したいので、スレッド プールを使用します。しかし、スレッドプールを使用して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
4

0 に答える 0