SingleOrDefault在.net应用程序中异步

时间:2014-03-13 17:58:18

标签: c# asynchronous asp.net-web-api odata

我想异步获取一个实体。我知道如何异步获取集合,但不是单个对象。这是我获取集合的代码:

MoviesService.Container _proxy;

_proxy在构造函数中初始化。这是另一个代码:

private async void Button_Click(object sender, RoutedEventArgs e)
        {
            IQueryable<MoviesService.Title> query = _proxy.Titles;
            var titles = await GetTitlesAsych(query);
            DataServiceCollection<MoviesService.Title> collection = new DataServiceCollection<MoviesService.Title>();
            collection.Load(titles);
            this.DataContext = collection;
        }
private Task<IEnumerable<MoviesService.Title>> GetTitlesAsych(IQueryable<MoviesService.Title> query)
        {
           DataServiceQuery<MoviesService.Title> dsQuery = (DataServiceQuery<MoviesService.Title>)(query);
           return Task.Factory.FromAsync<IEnumerable<MoviesService.Title>>(dsQuery.BeginExecute, dsQuery.EndExecute, null);
        }

我很困惑如何更改它,以便它可以用于获得单个实体。

我正在使用web api 2.

1 个答案:

答案 0 :(得分:0)

异步加载结果集作为集合。该列表将包含0或1个项目。然后,同步使用Enumerable.SingleOrDefault

我只想说,默认情况下你不应该在服务器上使用异步。在需要时使用它。