J'ai un TcpClient que j'utilise pour envoyer des données à un listener sur un ordinateur distant. L'ordinateur distant est parfois allumé, parfois éteint. De ce fait, le TcpClient ne parvient pas toujours à se connecter. Je veux que le TcpClient se termine au bout d'une seconde, de façon à ce qu'il ne prenne pas trop de temps lorsqu'il n'arrive pas à se connecter à l'ordinateur distant. Actuellement, j'utilise ce code pour le TcpClient :
try
{
TcpClient client = new TcpClient("remotehost", this.Port);
client.SendTimeout = 1000;
Byte[] data = System.Text.Encoding.Unicode.GetBytes(this.Message);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
data = new Byte[512];
Int32 bytes = stream.Read(data, 0, data.Length);
this.Response = System.Text.Encoding.Unicode.GetString(data, 0, bytes);
stream.Close();
client.Close();
FireSentEvent(); //Notifies of success
}
catch (Exception ex)
{
FireFailedEvent(ex); //Notifies of failure
}
Cela fonctionne assez bien pour gérer la tâche. Elle l'envoie si elle le peut, et attrape l'exception si elle ne peut pas se connecter à l'ordinateur distant. Cependant, lorsqu'elle ne peut pas se connecter, il lui faut dix à quinze secondes pour lancer l'exception. J'ai besoin d'un délai d'environ une seconde ? Comment puis-je modifier le délai d'expiration ?