LoadOperation.Completed против обратного вызова в DomainContext.Load () - PullRequest
3 голосов
/ 10 марта 2010

Использование Silverlight 3 с RIA: в чем разница между событием LoadOperation.Completed и использованием обратного вызова через метод DomainContext.Load? Оба запускаются асинхронно, и оба предоставляют доступ к LoadOperation. Когда / почему я использовал бы один поверх другого?

Спасибо: -)

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Договорились, что нет разницы в функциональности. Это о стиле кодирования. Если работа, которую я должен выполнить после завершения запроса, проста, например привязка данных к сетке, мне нравится использовать следующий синтаксис для встраивания завершенного кода, а не определять отдельный метод.

context.Load<EntityType>(query).Completed += (lo, args) =>
{
   myGrid.ItemsSource = ((LoadOperation) lo).Entities;
}

Это обеспечивает чистоту синхронного кода, но код внутри фигурных скобок будет фактически выполняться асинхронно.

Удачи!

2 голосов
/ 11 марта 2010

Нет разницы; 2 варианта предлагаются для гибкости. Много раз обратного вызова будет достаточно, но если вы вернете LoadOperation из метода, вызывающая сторона может затем выбрать подписку.

Обратите внимание, что даже если загрузка завершится до того, как вы подпишетесь на событие Completed, ваш обработчик все равно будет вызван. Мы гарантируем, что каждый подписчик на событие будет вызван.

...