2015-09-05 71 views
2

我正在構建一個簡單的C#單聲道應用程序,它從parse.com服務器查詢數據。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庫的一部分。有什麼建議麼?

+0

這是什麼版本的單聲道? – knocte

+0

單聲道版本:4.0.3 – jigglypuff

回答

1

它似乎是一個解析庫錯誤。我已經將解析庫從1.5.5降級到1.5.4,現在它工作正常。