https://github.com/Sangeepan/stackoverflow_github(生成此错误的测试项目)
以下代码生成错误:
mscorlib.dll中出现未处理的“System.StackOverflowException”类型异常
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));
}
}
当我用Debug.Writeline(item)替换await行时,它工作正常。
答案 0 :(得分: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);
}
});
}
答案 1 :(得分:0)
问题解决了。我需要将toString()添加到json对象。有时,VS12中的错误消息可能会误导您。当我搜索stackoverflow错误消息时,它就是无限循环和线程。
main_userlist.Items.Add(item.toString());