2012-05-31 4 views
0

Я пытаюсь получить данные с помощью приведенных ниже методов, и я получаю нулевой ответ и не могу понять, почему. Я просто пытаюсь использовать другой способ использования службы wcf из silverlight, и я не понимаю, что мне нужно. Я желаю, чтобы кто будет видеть, что происходит здесь не так :)Обратный вызов службы 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) 

Объект работник будет оставаться пустым. Если я перейду в сервисный вызов и следую по коду, он найдет правильную запись из базы данных, а оператор return отобразит объект с правильными данными, но все же объект employee в стороне silverlight останется нулевым.

Некоторая помощь пожалуйста :) И спасибо!

+0

Вы пробовали использовать инструменты Fiddler или разработчика и захватить запрос? Имеет ли орган реагирования то, что вы ищете? – Aligned

+0

Обе новые темы для меня, но я постараюсь изучить их. Благодарю. – japesu

ответ

0

Toughed Я бы ответил на свой вопрос. Я узнал, что служба возвращает мне ценность, но я не смог полностью понять природу асинхронных вызовов. То, что я пытаюсь выполнить, - это кодирование, которое кажется синхронным, в то время как фактически является асинхронным, если это имеет какой-то смысл. Таким образом, объект employee является нулевым, потому что я не знаю, что служба вернула что-то в классе агента. Мне все равно нужен метод, чтобы сообщить мне, когда объект сотрудника готов к использованию. Это должно быть какое-то событие, возможно, свойство PropertyChanged или настраиваемое событие, но в любом случае мне нужно будет остановить код, дождаться, когда сотрудник получит нужное мне значение, а затем продолжит. Не знаю, как это сделать в одном блоке кода, не перескакивая на обработчик событий и т. Д.

Любые идеи или ссылки для меня, чтобы читать, оценены.

Смежные вопросы