OData из Silverlight без шаблона репозитория - PullRequest
0 голосов
/ 15 мая 2011

Я пытаюсь создать пример приложения, используя OData и Silverlight, используя (что еще?) Сервис Netflix. Мне уже удалось создать приложение с использованием WPF, но я пытаюсь перенести свой класс обслуживания на асинхронную модель.

Мой существующий класс обслуживания (упрощенный) выглядит следующим образом:

public IEnumerable<Title> BlockingSearch(TitleSearchParam param)
{
    var catalog = new NetflixCatalog(new Uri("http://odata.netflix.com/Catalog/"));

    return catalog.Titles.Where(t =>
                            t.Instant.AvailableFrom > param.InstantStartDate && t.Instant.AvailableFrom < param.InstantEndDate &&
                            (string.IsNullOrEmpty(param.TitleName) || t.Name.Contains(param.TitleName))).ToList();

    }

Во всех примерах асинхронного использования OData используется какой-либо шаблон Respository Pattern и / или требуется передать инстанцированную коллекцию. Я хотел бы смоделировать сигнатуру метода для вызова Silverlight / Async, чтобы он выглядел примерно так (с сам класс обслуживания не имеет состояния):

public void AsyncSearch(TitleSearchParam param, Action<IEnumerable<Title>> completedCallback, Action<MyErrorClass> errorCallback, object callBackOwner)
{

}

Я думаю, что мог бы , что-то вроде того, что MS описывает в Вызов синхронных методов асинхронно , но я надеялся, что было более элегантное решение, которого мне не хватало.

1 Ответ

0 голосов
/ 15 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...