2012-05-31 3 views
0

아래의 메서드를 사용하여 데이터를 가져 오려고하고 있는데 응답이 없으며 이유를 알 수 없습니다. 나는 실버 라이트의 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) 

직원 객체가 null 유지됩니다. 서비스 호출을 중단하고 코드를 따라 가면 데이터베이스에서 올바른 레코드를 찾고 return 문은 올바른 데이터가있는 객체를 표시하지만 여전히 실버 라이트 측의 employee 객체는 null로 남습니다.

일부 도움주세요 :) 감사합니다.

+0

피들러 또는 개발자 도구를 실행하고 요청을 캡처 해 보셨습니까? 응답 본문에 원하는 내용이 있습니까? – Aligned

+0

두 가지 모두 새로운 주제이지만 그 중 하나를 살펴 보겠습니다. 감사. – japesu

답변

0

나는 내 자신의 질문에 답할 것입니다. 그 서비스가 나에게 가치를 돌려주고 있다는 것을 알았지 만 비동기 호출의 성격을 완전히 이해하지 못했습니다. 내가 성취하려고 노력하는 것은 그것이 의미가있는 경우 실제로 비동기가되는 동안 동기를 느끼는 코딩입니다. 따라서 서비스가 에이전트 클래스에서 무언가를 리턴했다는 지식이 없으므로 employee 객체가 null입니다. 직원 개체를 언제 사용할 준비가되었는지 알려주는 방법이 필요합니다. 이것은 일종의 이벤트 일 수도 있습니다 PropertyChanged 또는 사용자 지정 이벤트하지만 어쨌든 나는 코드를 중지해야 할 때까지 기다리는 직원이 내가 원하는 값을 가질 때까지 계속합니다. 이벤트 처리기 등으로 점프하지 않고 동일한 코드 블록에서이를 수행하는 방법을 모르십시오 ...

나를 읽으려는 아이디어 나 링크가 좋습니다.

관련 문제