我正在尝试使用以下方法获取数据,但我得到空响应并且无法找出原因。我只是尝试使用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)
员工对象将保持为空。如果我在服务调用中放入一个中断并按照代码从数据库中找到正确的记录,并且return语句显示一个具有正确数据的对象,但Silverlight方面的员工对象仍将保持为空。
请一些帮助:)谢谢!
答案 0 :(得分:0)
坚持我会回答我自己的问题。我发现该服务正在向我返回一个值,但我未能完全理解异步调用的性质。我想要完成的是编码感觉同步,而实际上是异步,如果这是有道理的。因此,employee对象为null,因为我不知道该服务已在代理类中返回了某些内容。我仍然需要一种方法来告诉我何时准备使用员工对象。这可能是某种事件,可能是PropertyChanged或自定义事件,但无论如何我需要停止代码,等待员工拥有我需要的值然后继续。不知道如何在相同的代码块中完成此操作而不跳转到事件处理程序等...
感谢我阅读的任何想法或链接。