繁体   English   中英

Windows应用商店应用程序,调用DataServiceQuery.EndExecute()时WCF数据服务InvalidOperationException?

[英]Windows store app, WCF Data Service InvalidOperationException when calling DataServiceQuery.EndExecute()?

我查找了相关数据,发现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);
}

我只成功了一次,之后它总是在query.EndExecute(ira)方法中崩溃,并说InvalidOperationException未由用户代码处理。

另外,它在控制台应用程序中也能很好地工作。 我想主要问题是Windows应用商店应用,但是如何解决呢?

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

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

也许您不应该在每次调用时都初始化您的上下文。 只需将其初始化一次,即可在需要时重新使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM