0

https://github.com/Sangeepan/stackoverflow_github(このエラーを生成するテストプロジェクト)

次のコードはエラーを生成します:

タイプ'System.StackOverflowException'の未処理の例外がmscorlib.dllで発生しました

    private async void updateUserlist(String userlist)
    {
        var jsonArray = JArray.Parse(userlist);

        foreach (var jsonobjects in jsonArray)
        {
            var item = jsonobjects["Id"];
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => main_userlist.Items.Add(item));
        }
    }

await行をDebug.Writeline(item)に置き換えると、正常に機能します。

4

2 に答える 2

1

これは、待っているタスクがあまりにも早く完了し、処理するアイテムが多い場合に発生する可能性があります。

呼び出しasyncをより「チャンキー」にします (したがって遅くなります):

private async Task updateUserlistAsync(String userlist)
{
  var jsonArray = JArray.Parse(userlist);
  var jsonobjects = jsonArray.Select(jsonobjects => jsonobjects["Id"]).ToArray();
  await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
  {
    foreach (var item in jsonobjects)
    {
      main_userlist.Items.Add(item);
    }
  });
}
于 2012-11-14T16:15:04.110 に答える
0

問題は解決しました。json オブジェクトに toString() を追加する必要がありました。VS12 のエラー メッセージが誤解を招く場合があります。stackoverflow エラー メッセージをググったところ、無限ループとスレッドがすべてでした。

main_userlist.Items.Add(item.toString());

于 2012-11-15T00:25:38.650 に答える