0

我正在尝试使用以下方法获取数据,但我得到空响应并且无法弄清楚原因。我只是在尝试使用 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)

员工对象将保持为空。如果我中断服务调用并执行代码,它会从数据库中找到正确的记录,并且返回语句显示一个具有正确数据的对象,但 silverlight 端的员工对象仍将保持为空。

请提供一些帮助:)谢谢!

4

1 回答 1

0

艰难的我会回答我自己的问题。我发现该服务正在向我返回一个值,但我未能完全理解异步调用的本质。我想要完成的是感觉同步的编码,而实际上是异步的,如果这有意义的话。因此,员工对象为空,因为我不知道该服务已在代理类中返回了某些内容。我仍然需要一种方法来告诉我何时可以使用员工对象。这必须是某种事件,可能是 PropertyChanged 或自定义事件,但无论如何我都需要停止代码,等待员工获得我需要的值,然后继续。不知道如何在不跳转到事件处理程序等的情况下在同一代码块中完成此操作......

感谢我阅读的任何想法或链接。

于 2012-06-06T12:33:29.977 回答