parse.com查询在mono下抛出堆栈溢出异常

时间:2015-09-05 14:07:06

标签: parse-platform mono

我正在构建一个简单的C#mono应用程序,用于从parse.com服务器查询数据。

没什么特别的:

    private static async Task<ParseGameData> DownloadGameData(DateTime dateFrom)
    {
        ParseGameData gameData = new ParseGameData();
        InitParse();

        var qHits = ParseObject.GetQuery("Hits").WhereGreaterThan("createdAt", dateFrom)
            .Limit(100).OrderBy("createdAt");
        gameData.hits = await qHits.FindAsync();

        return gameData;
    }

从另一个函数调用:

ParseGameData gameData = DownloadGameData(timestamp).Result;

这很好用,查询少量(少于75条记录)时不会抛出任何异常。但是,如果我将限制设置得更高,应用程序崩溃了,我得到了这个:

    Unhandled Exception:
    System.StackOverflowException: The requested operation caused a stack overflow.
    at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <filename unknown>:0 
    at System.Threading.Tasks.Task.FinishStageThree () [0x00000] in <filename unknown>:0 
    at System.Threading.Tasks.Task`1[System.Threading.Tasks.TaskExtensions+VoidResult].TrySetResult (VoidResult result) [0x00000] in <filename unknown>:0 
    at System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.TaskExtensions+VoidResult].TrySetFromTask (System.Threading.Tasks.Task task, Boolean lookForOce) [0x00000] in <filename unknown>:0 
    at System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.TaskExtensions+VoidResult].InvokeCore (System.Threading.Tasks.Task completingTask) [0x00000] in <filename unknown>:0 
    at System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.TaskExtensions+VoidResult].Invoke (System.Threading.Tasks.Task completingTask) [0x00000] in <filename unknown>:0 

......然后这些行重复。

出于兴趣目的:数据库中的每条记录大约需要65KB,因此100次点击将是6.5MB。

我已经在OS X和Linux上的两个单声道平台上尝试了这个代码。两个平台都抛出stackoverflow异常。但是在Windows上,使用.NET,它工作正常,即使有1000限制。这让我相信它是mono和parse.com库的东西。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这似乎是一个解析库错误。我已经将解析lib从1.5.5降级到1.5.4,现在它工作正常。