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



















