2012-05-31 72 views
0

我想用下面的方法獲取數據,我得到空響應,並找不出原因。我只是嘗試了一種使用Silverlight的wcf服務的不同方式,我不明白我應該做的。我希望有人會看到什麼錯誤在這裏:)Silverlight服務回調返回null

這是我的服務代理類:

Private Shared m_service As New DataServiceClient 

    Public Shared Sub GetSiteLogin(ByVal user As String, ByVal pass As String, callback As System.EventHandler(Of GetSiteLoginCompletedEventArgs)) 
      AddHandler m_service.GetSiteLoginCompleted, callback 
      m_service.GetSiteLoginAsync(user, pass) 
     End Sub 

這是呼叫:

Dim em As New DataService.Employee 
       Dim pass As String = CustomSecurity.Hash.GetSHA1Hash(txtPassword.Password) 

       ' Try to get the employee with the login information 
       SettingsServiceAgent.GetSiteLogin(txtUsername.Text, pass, Sub(s, r) em = r.Result) 

Employee對象將保持爲空。如果我在服務調用中插入一段時間,並按照代碼執行,它會從數據庫中找到正確的記錄,並且return語句顯示具有正確數據的對象,但silverlight方中的僱員對象仍然爲空。

有些幫助,請:)而且謝謝!

+0

您是否嘗試過啓動提琴手或開發人員工具並捕獲請求?響應機構是否有你想要的內容? – Aligned

+0

這兩個都是我的新主題,但我會試着去研究那些。謝謝。 – japesu

回答

0

Tou I我會回答我自己的問題。我發現服務正在爲我返回一個值,但我沒有完全理解異步調用的性質。我試圖完成的是那些感覺同步的編碼,而實際上是異步的,如果這是有道理的。所以員工對象爲空,因爲我沒有任何知識,該服務已經在代理類中返回了某些東西。我仍然需要一種方法告訴我員工對象何時可以使用。這可能是某種事件,也許是PropertyChanged或自定義事件,但無論如何我需要停止代碼,等待員工獲得我需要的價值然後繼續。不知道如何在同一個代碼塊中完成此操作,而無需跳轉到事件處理程序等等。

任何想法或鏈接供我閱讀讚賞。