2012-05-31 73 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或自定义事件,但无论如何我需要停止代码,等待员工获得我需要的价值然后继续。不知道如何在同一个代码块中完成此操作,而无需跳转到事件处理程序等等。

任何想法或链接供我阅读赞赏。