2010-03-23 107 views
2

我正在使用適用於WCF服務的Silverlight應用程序。在我的瀏覽器中加載服務元數據時,我注意到它提供了以下代碼:Silverlight - 關閉服務

class Test 
{ 
    static void Main() 
    { 
     myServiceClient client = new myServiceClient(); 

     // Use the 'client' variable to call operations on the service. 

     // Always close the client. 
     client.Close(); 
    } 
} 

最後一行顯示「始終關閉客戶端」。我的問題是,什麼時候應該關閉Silverlight應用程序中的客戶端?如果在調用「[MyServiceOperation] Async」之後關閉它,還是應該在「[MyServiceOperation] Completed」事件處理程序中關閉它?

在異步場景中使用時,謝謝你,

回答

2

Close塊。

也有代碼的BeginClose/EndClose異步變種,如果你不想讓你的調用代碼塊,但是從我可以看到,如果你調用.Close它會等到你的優秀調用之前.Close回報解決。

還要注意,調用它在你完成的處理可能導致多個異步調用同一客戶對象的問題......我建議在調用代碼要麼.Close.BeginClose

更新這樣做:From the documentation(雖然有點掩埋)

此方法導致一個 ICommunicationObject優雅地 從打開狀態到 閉路狀態轉變。 Close方法 允許任何未完成的工作在返回之前完成 。在達到關閉狀態後(對於 例如,發送完所有緩衝 消息。)

...

關閉回報。