【问题标题】:MobileService Offline Sync PullAsync does not returnMobileService 离线同步 PullAsync 不返回
【发布时间】:2015-01-27 02:11:19
【问题描述】:

我目前正在尝试更新我的 Windows Phone 应用程序以使用具有离线同步功能的移动服务。

我使用了 msdn 入门,但它不适合我。

每次打电话

await table.PullAsync("table", table.getQuery()); 

它永远不会结束(程序不会继续)。

使用提琴手我可以看到,客户端从服务器获得正确的响应。

可能是什么问题?

谢谢!

编辑:当我执行 .GetAwaiter().OnCompleted(...) 时,回调会被调用。为什么 await 会挂起?

【问题讨论】:

    标签: c# .net windows-phone-8.1 azure-mobile-services


    【解决方案1】:

    最常见的原因是,在调用堆栈中的某个位置,您使用 GetResult() 或类似的方式执行 GetAwaiter() 或类似的操作 - 这通常会在第二次调用时“挂起”程序,因为它仍在等待一个线程从未退出。

    在整个应用中始终使用await

    同时尽可能将ConfigureAwait(false)添加到awaited方法中,即:

    await table.PullAsync("table", table.getQuery()).ConfigureAwait(false);
    

    更多关于此事的信息Stephen Cleary's blog

    【讨论】:

    • 您还应该在调试器中运行以查看是否有任何线程被阻塞。如果是死锁,那么 ConfigureAwait 可以解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多