Импорт метода WCF в приложение WP7 становится асинхронным и не возвращает список. - PullRequest
1 голос
/ 31 декабря 2010

Я новичок в создании проектов WCF, а также Windows Phone 7.

Я создал простой метод в WCF, который просто возвращает список объектов.

public List<Sticky> GetSticky()
{
    return stickys;
}

Я тогда использовал это очень просто

Sticky[] test = client.GetSticky();

Когда я импортирую dll WCF через ссылку на сервис в консольное приложение, метод действует так, как должен. Когда я импортирую метод в приложение Windows Phone 7, он становится асинхронным (не уверен, что это значит) и не возвращает список, он становится недействительным.

client.GetStickyAsync();

Если кто-нибудь может помочь объяснить, что происходит, и помочь мне быть немного менее смущенным.

1 Ответ

1 голос
/ 09 января 2011

Silverlight хочет, чтобы вы избегали блокирующих вызовов службы в потоке пользовательского интерфейса, поэтому он заставляет вас использовать неблокирующую асинхронную версию вызовов метода WCF. Это означает, что вызов немедленно возвращается, и вы должны получить результат вызова со связанным событием. Что вам нужно сделать, это зарегистрировать обработчик события, прежде чем сделать вызов.

client.GetStickyCompleted 
    += new EventHandler<ServiceClient.GetStickyCompletedEventArgs>(client_GetStickyCompleted);
client.GetStickyAsync();

Результатом вашего вызова метода является один из параметров, передаваемых в обработчик событий, например

void client_GetStickyCompleted(object sender, ServiceClient.GetStickyCompletedEventArgs e)
{
    List<Sticky> retList = e.Result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...