Отображение данных в DataGrid при помощи LINQ и WCF в Silverlight - Асинхронный вызов сервиса

ОГЛАВЛЕНИЕ

Асинхронный вызов сервиса

Вызов веб-сервиса из Silverlight можно сделать только асинхронно (в принципе, так и должно быть, поскольку вы работаете в обозревателе и не можете себе позволить блокировку!)

Первым заданием будет получить ссылку на Service1Client . Вы можете исследовать это в обозревателе объектов, чтобы удостовериться в том, что это именно тот объект, который содержит асинхронные методы (Asynchronous), необходимые нам,

 

Рис.  3-17. Клиент веб-сервиса в обозревателе (изображение немного обрезано для экономии места)

Мы присвоим Service1Client локальному объекту webService:

void Search_Click(object sender, RoutedEventArgs e)
{
  ServiceReference1.Service1Client webService =
   new SQLData.ServiceReference1.Service1Client(); 

Далее мы используем webService для настройки обработчика события для метода, который будет вызван тогда, когда вызывается событие GetCustomersByLastNameCompleted:

webService.GetCustomersByLastNameCompleted +=
   new EventHandler<SQLData.ServiceReference1.
   GetCustomersByLastNameCompletedEventArgs>
   (webService_GetCustomersByLastNameCompleted); 

Наконец-то мы выполнили асинхронный вызов

webService.GetCustomersByLastNameAsync(LastName.Text);

Когда сервис завершает действие, то вызывается событие GetCustomersByLastNameCompleted, а также наш метод. Тщательно составленный список клиентов сохранен в e.Result, который мы присвоим свойству ItemSource элемента DataGrid и все привязки будут теперь иметь источник, к которому они могут соединяться.

void webService_GetCustomersByLastNameCompleted(
   object sender,
   SQLData.ServiceReference1.GetCustomersByLastNameCompletedEventArgs e)
{
 
   theDataGrid.ItemsSource = e.Result;

 

Рис. 3-18. Запущенная программа

Готово!

Создание такого приложения, даже с использованием Styles и многого другого для придания более изящного вида, станет минутным делом, как только вы узнаете, как просто это делается!

Скачать исходники примеров 

Источник