2011-05-15 68 views
0

我想創建一個示例應用程序使用OData和Silverlight,使用(還有什麼?)的Netflix服務。我已經成功地使用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的異步使用某種程序存儲庫模式和/或需要的實例化的集合中傳遞的例子我會喜歡的方法簽名模型Silverlight的/異步調用看起來像這樣(與服務類本身是無狀態的):

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

} 

我想我能這樣一些事情沿着MS在Calling Synchronous Methods Asynchronously概述的線條,但我希望有一個更優雅的解決方案,我錯過了。

回答

0

正如你所知道的,你總是可以在不同於UI線程的線程上運行調用,所以本身不會有阻塞。這似乎是一個體面的解決方案。然後你可以(實際上必須)使用調度程序來處理來自回調的結果,如果你打算在UI中使用它們。