2010-06-23 14 views
3

.NET L'accès distant est utilisé dans mon application brownfield. Nous avons décidé de définir des délais d'attente pour nos méthodes d'accès à distance.Délai d'activation de l'accès distant

System.Collections.IDictionary properties = new System.Collections.Hashtable(); 
properties["name"] = Ipc_Channel_Name; 
properties["timeout"] = 1 * 1000; 

IChannel clientChannel = new IpcClientChannel(properties, null); 
ChannelServices.RegisterChannel(clientChannel, false); 

Le problème est qu'il semble que le délai d'attente ne fonctionne pas. Je l'ai vérifié en définissant System.Threading.Thread.Sleep(5 * 1000); dans le code appelé. La raison pour laquelle IpcClientChannel ne prend pas en charge les délais d'attente?

Comment définir le délai d'expiration?

+0

Des idées? La question est toujours actuelle. –

Répondre

4

Le nom de la propriété pour définir le délai d'attente de IpcClientChannel n'est pas "timeout". Le nom est "connectionTimeout". Voir Client Channel Properties (MSDN). Alors ça devrait marcher.

System.Collections.IDictionary properties = new System.Collections.Hashtable(); 
properties["name"] = Ipc_Channel_Name; 
properties["connectionTimeout"] = 1 * 1000; 

IChannel clientChannel = new IpcClientChannel(properties, null); 
ChannelServices.RegisterChannel(clientChannel, false); 
+0

Bonjour, Jehof. Merci pour votre réponse. De MSDN: "connectiontimeout est un nombre entier qui spécifie le nombre de millisecondes à attendre pour une connexion réussie 0 ou -1 indique un délai d'expiration infini. La valeur par défaut est Infinite." si vous définissez un connectiontimeout à 1 * 1000 et System.Threading.Thread.Sleep (5 * 1000); dans le code invoqué, vous n'obtiendrez aucune exception. Il faudra attendre 5 secondes. Je l'ai résolu en modifiant le code du client. –

+0

@MegaHerz Désolé, mais je ne suis pas complet. Vous définissez connectiontimeout sur 1000ms et le serveur dort sur 5000ms> 1000ms. Il expire définitivement. Pourquoi ne recevez-vous pas une exception? Vous voulez dire que c'est un bug? – Gqqnbig