,我讀了使用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的客戶端使用塊發出) –