2011-05-15 8 views
0

Netflix 서비스를 사용하여 OData 및 Silverlight를 사용하여 샘플 응용 프로그램을 만들려고합니다. WPF를 사용하여 앱을 만드는 데 이미 성공했지만 서비스 클래스를 비동기 모델로 이식하는 데 어려움을 겪고 있습니다.리포지토리 패턴이없는 Silverlight의 OData

내 기존 서비스 클래스 (간체) 다음과 같습니다.

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 패턴의 어떤 종류를 사용 및/또는 인스턴스화 수집을 필요로 소모의 모든 예제 내가 것

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

} 

내가 그래서 몇 가지를 할 수 생각 : 실버/비동기 호출 (자체 비 저장되는 서비스 클래스)과 같이 표시하는 방법 서명을 모델처럼 MS가 윤곽선을 그리는 선상에있는 것은 Calling Synchronous Methods Asynchronously이지만, 내가 누락시킨보다 우아한 해결책이 있기를 바랐다.

답변

0

이미 알고 있듯이 UI 스레드와 다른 스레드에서 호출을 실행할 수 있기 때문에 블로킹 자체가 없습니다. 괜찮은 해결책 인 것 같습니다. 그런 다음 UI와 함께 사용하려는 경우 콜백으로부터 오는 결과를 처리하기 위해 디스패처를 사용할 수 있습니다 (실제로 필요합니다).