【发布时间】:2014-02-04 21:35:38
【问题描述】:
我正在使用 parse.com 提供的 .NET API,
https://parse.com/docs/dotnet_guide#objects-saving
我的代码的 sn-p 如下所示;
public async void UploadCurrentXML()
{
...
var query = ParseObject.GetQuery("RANDOM_TABLE").WhereEqualTo("some_field", "string");
var count = await query.CountAsync();
ParseObject temp_A;
temp_A = await query.FirstAsync();
...
// do lots of stuff
...
await temp_A.SaveAsync();
}
总结;对远程数据库进行查询。根据结果,从数据库中获得特定对象(或其引用)。对对象执行多次操作,最后将其保存回数据库。
所有数据库操作都通过 await ParseObject.randomfunction() 进行。是否可以以同步方式调用这些函数?或者至少等到操作返回而不继续?该应用程序专为维护目的而设计,运行时间不是问题。
我问这个是因为就目前情况而言,我收到一个错误提示
正在进行的计数操作数已达到限制。
我试过了,
var count = await query.CountAsync().ConfigureAwait(false);
在所有的 await 调用中,但这无济于事 - 代码仍在异步运行。
var count = query.CountAsync().Result;
导致应用程序卡住 - 可以肯定我遇到了死锁。
经过一番搜索,我想到了这个问题,
How would I run an async Task<T> method synchronously?
但我不明白它如何适用于我的案例,因为我无法访问 ParseObject 的源代码。帮助? (我正在使用 .NET 4.5)
【问题讨论】:
-
为什么不使用您正在使用的方法的同步版本?例如
Count(),First()? -
遗憾的是,它们不存在。否则我会尝试的。 :(
-
query是什么类型? -
新任务(UploadCurrentXML).RunSynchronously();
-
@usr:最好的资源是this blog post,它(简要)涵盖了所有方法,并指出没有通用的解决方案。
标签: c# .net asynchronous parse-platform