Czy jest możliwe zresetowanie menedżera ServicePointManager?

Próbuję podążać za kodem podobnym do tego podanego wW jaki sposób System.Net.Mail.SMTPClient wykonuje swoje lokalne powiązanie IP Korzystam z systemu Windows 7 i .Net 4.0 na komputerze z wieloma adresami IP. MamBindIPEndPointDelegate zdefiniowane

<code>private static IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
{
    string IPAddr = //some logic to return a different IP each time
    return new IPEndPoint(IPAddr, 0);
}
</code>

Następnie wysyłam e-mail za pomocą

<code>SmtpClient client = new SmtpClient();
client.Host = SMTP_SERVER; //IP Address as string
client.Port = 25;
client.EnableSsl = false;
client.ServicePoint.BindIPEndPointDelegate 
   = new System.Net.BindIPEndPoint(BindIPEndPointCallback);
client.ServicePoint.ConnectionLeaseTimeout = 0;
client.Send(msg);  //msg is of type MailMessage properly initialized/set
client = null;
</code>

Przy pierwszym wywołaniu tego kodu delegat zostaje wywołany i niezależnie od tego, jaki adres IP zostanie ustawiony, zostanie użyty. Kolejne czasy wywoływania tego kodu, delegat nigdy nie zostanie wywołanytj. pierwszy adres IP jest następnie używany. Czy można zmienić tę sytuację, gdy za każdym razem, gdy kod zostanie wywołany, wywoływane jest wywołanie zwrotne delegata?

Myślę oServicePointManager (który jestklasa statyczna) buforuje wynik pierwszego połączenia do delegata. Czy można zresetować tę klasę? Nie zależy mi na wydajności.

Dziękuję, O. O.

questionAnswers(2)

yourAnswerToTheQuestion