É possível redefinir o ServicePointManager?

Eu estou tentando seguir o código semelhante ao dado emComo o System.Net.Mail.SMTPClient faz sua ligação de IP local Eu estou usando o Windows 7 e .net 4.0 em uma máquina com vários endereços IP. Eu tenho oBindIPEndPointDelegate definiram

<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>

Eu então envio meu email usando

<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>

Na primeira vez em que esse código é chamado, o delegado é chamado e, seja qual for o endereço IP definido, ele é usado. Nas vezes subsequentes em que esse código é chamado, o delegado nunca é chamadoou seja, o primeiro endereço IP é usado posteriormente. É possível alterar esta situação em que cada vez que o código é chamado, o retorno de chamada do delegado é chamado?

Estou pensandoServicePointManager (que é umclasse estática) armazena em cache o resultado da primeira chamada para o delegado. É possível redefinir essa classe? Eu não me importo com performance.

Obrigado, O. O.

questionAnswers(2)

yourAnswerToTheQuestion