je lis que les meilleures pratiques pour l'utilisation de proxy WCF serait:WCF fermer les meilleures pratiques
YourClientProxy clientProxy = new YourClientProxy();
try
{
.. use your service
clientProxy.Close();
}
catch(FaultException)
{
clientProxy.Abort();
}
catch(CommunicationException)
{
clientProxy.Abort();
}
catch (TimeoutException)
{
clientProxy.Abort();
}
Mon problème est, après que je répartisse mes proxy, j'attribue des gestionnaires d'événements à et initialiser également une autre méthode en utilisant la proxy:
public void InitProxy()
{
sdksvc = new SdkServiceClient();
sdksvc.InitClusteringObjectCompleted += new EventHandler<InitClusteringObjectCompletedEventArgs>(sdksvc_InitClusteringObjectCompleted);
sdksvc.InitClusteringObjectAsync(Utils.DSN, Utils.USER,Utils.PASSWORD);
sdksvc.DoClusteringCompleted += new EventHandler<DoClusteringCompletedEventArgs>(sdksvc_DoClusteringCompleted);
sdksvc.CreateTablesCompleted += new EventHandler<CreateTablesCompletedEventArgs>(sdksvc_CreateTablesCompleted);
}
Je dois maintenant appeler la méthode InitProxy() chaque fois que j'utilise le proxy si je veux l'utiliser comme la meilleure pratique suggère.
Des idées pour éviter cela?
Vous n'avez pas besoin d'appeler '.Close()' après chaque appel à votre service WCF - tant qu'il n'y a pas d'erreur, vous pouvez tout à fait utiliser ce proxy pour un autre appel. Le point à propos de cette meilleure pratique est que vous ne devriez pas mettre vos appels proxy WCF dans un bloc using (....) {....} 'puisque ce bloc disposera le proxy à la fermeture'} 'et fermera le proxy WCF peut provoquer une exception qui passerait inaperçue avec le bloc using. –
Copie possible de [Quelle est la meilleure solution de contournement pour le client WCF \ 'en utilisant \' problème de bloc?] (Http://stackoverflow.com/questions/573872/what-is-the-best-workaround-for-the- wcf-client-using-block-issue) –