,我读了使用WCF代理的最佳做法是:WCF关闭最佳实践
YourClientProxy clientProxy = new YourClientProxy();
try
{
.. use your service
clientProxy.Close();
}
catch(FaultException)
{
clientProxy.Abort();
}
catch(CommunicationException)
{
clientProxy.Abort();
}
catch (TimeoutException)
{
clientProxy.Abort();
}
我的问题是,后我分配我代理,我给你的事件处理程序,它也使用初始化其他方法代理:
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);
}
我现在需要调用InitProxy()方法,每个如果我想作为最佳实践建议使用它我使用代理时间。
有关如何避免这种情况的任何想法?
每次调用WCF服务后,您不必调用'.Close()' - 只要没有错误,您可以再次使用该代理进行另一次调用。关于这个最佳做法的一点是,你不应该把你的WCF代理调用放入一个'using(....){....}'块中,因为该块将在关闭'}处置代理并关闭WCF代理可能会导致一个异常,而这个异常不会被use块察觉。 –
可能重复的[WCF客户端使用\'块问题是什么是最好的解决方法?](http://stackoverflow.com/questions/573872/what-is-the-best-workaround-for-the- WCF的客户端使用块发出) –