调用DataServiceQuery.EndExecute()时出现Windows存储应用程序WCF数据服务Invali

本文关键字:应用程序 存储 WCF 数据 Invali 服务 Windows EndExecute DataServiceQuery 调用 | 更新日期: 2023-09-27 18:25:11

我查找相关数据发现,Windows商店应用程序只支持异步WCF调用,以确保UI响应良好。这是一个相对的问题。

我实现了我的数据服务,并且喜欢这样。这是代码:

MyDataServiceContext ctx = new MyDataServiceContext(uri);
DataServiceQuery<COURSE_OK> query =
        (DataServiceQuery<COURSE_OK>)(from crs in ctx.COURSE_OK
                                      select crs);
TaskFactory<IEnumerable<COURSE_OK>> tf = new TaskFactory<IEnumerable<COURSE_OK>>();
var result = await tf.FromAsync(query.BeginExecute(null, null),
                                ira => query.EndExecute(ira)); // InvalidOperationException
foreach (var a in result)
{
    System.Diagnostics.Debug.WriteLine("{0}", a.TITLE);
}

我只成功过一次,之后它总是在查询中崩溃。EndExecute(ira)方法,并且用户代码未处理所述InvalidOperationException。

此外,它在控制台应用程序中运行良好。我想主要的问题是Windows商店应用程序,但如何解决这个问题?

调用DataServiceQuery.EndExecute()时出现Windows存储应用程序WCF数据服务Invali

您的功能看起来相当不错。这就是对我有效的:

var queryTask = Task.Factory.FromAsync<IEnumerable<TResult>>(query.BeginExecute(null, null), (asResult) =>
{
   var result = query.EndExecute(asResult).ToList();
   return result;
});

也许您不应该在每次调用时初始化上下文。只需初始化一次并在每次需要时重用它。