0

以下の方法でデータを取得しようとしていますが、null 応答が返され、その理由がわかりません。Silverlight から wcf サービスを使用する別の方法を試しているところですが、何をすべきかわかりません。ここで何がうまくいかないのか誰かに見てもらいたい:)

これは私のサービスエージェントクラスです:

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)

従業員オブジェクトは null のままです。サービス呼び出しを中断してコードをたどると、データベースから正しいレコードが見つかり、return ステートメントは正しいデータを持つオブジェクトを示しますが、Silverlight 側の従業員オブジェクトは null のままです。

助けてください:)そしてありがとう!

4

1 に答える 1

0

私は自分の質問に答えるのが大変でした。サービスが値を返していることがわかりましたが、非同期呼び出しの性質を完全には理解できませんでした。私が達成しようとしているのは、同期を感じながらも実際には非同期であるというコーディングです。したがって、従業員オブジェクトは null です。これは、サービスがエージェント クラスで何かを返したことがわからないためです。従業員オブジェクトをいつ使用できるようになったかを知らせるメソッドが必要です。これは、PropertyChanged またはカスタム イベントなどの何らかのイベントである必要がありますが、とにかくコードを停止し、従業員が必要な値を取得するのを待ってから続行する必要があります。イベントハンドラーなどにジャンプせずに、同じコードブロックでこれを達成する方法がわかりません...

私が読むためのアイデアやリンクは大歓迎です。

于 2012-06-06T12:33:29.977 に答える