Silverlight調用WCF出現異常解決方案
WCF在實際開發過程中,其應用范圍廣泛,可以幫助我們輕松的實現許多領域的功能需求。不過在操作的過程中,我們同樣需要注意一些細節問題以防止異常的出現。在這里我們就為大家介紹一種Silverlight調用WCF時出現錯誤的解決方法。
在采用Silverlight調用WCF的開發過程中,今天遇到一個錯誤。由于 Silverlight 中只支持異步方式的 WCF 調用,所以代碼一般是這樣子的:
- var myServiceClient = new MyServiceClient();
- myServiceClient.GetSomeDataCompleted += (sender, args) =>
- {
- HtmlPage.Window.Alert("completed.");
- };
- myServiceClient.GetSomeDataAsync();
這樣寫是沒有問題的。#t#
但是有的朋友可能為了提高代碼共用程度,而把 myServiceClient 這個 WCF 的客戶端代理對象作為類的字段來定義,以便在多次調用中共享。比如這篇教程中所說的:
“這一步比較復雜,這里分小點討論。為了調用WCF服務,先定義一下全局變量。AcademeServiceClient academeSClient;”
這樣做有什么問題呢?
假設我們上面的代碼是在一個按鈕的點擊事件處理函數里定義的,那么,就會導致每點擊一次按鈕就注冊一次 GetSomeDataCompleted 的事件處理函數。***你會發現點一次按鈕,會重復多次執行回調函數。
所以在Silverlight調用WCF中還是不要共用 client 代理了,每次調用之前創建一個比較好。因為今天遇到了這個錯誤,在這里提醒一下大家。



















