我在Windows Phone商店中有我的应用程序,从报告中我可以看到几个崩溃跟随堆栈跟踪:
Problem function
MyApp.InputPage+_populateLocationList_d__0.MoveNext
Exception type
system.nullreferenceexception
Stack trace
"Frame Image Function Offset
0 myapp_ni MyApp.InputPage+_populateLocationList_d__0.MoveNext 0x00000050
1 mscorlib_ni System.Runtime.CompilerServices.AsyncMethodBuilderCore._ThrowAsync_b__0 0x00000036"
是的,我知道问题出在InputPage populateLocationList方法中,但该方法非常复杂。知道是什么原因引起的吗?如何调试这个,因为我无法重现我自己的错误。
这是我的populateLocationList:
private async void populateLocationList(object sender, EventArgs e)
{
String searchString = this.locationTextBox.Text;
var geoCodesList = new List<GeocodeResponse>();
if (searchString.Length >= 3)
{
WebApiWorker webApi = new WebApiWorker();
geoCodesList = await webApi.GetGeocodeAsync(searchString);
}
if (geoCodesList == null || geoCodesList.Count < 1)
{
noLocationsFoundText.Visibility = Visibility.Visible;
}
else
{
noLocationsFoundText.Visibility = Visibility.Collapsed;
}
this.routeLocationsList.ItemsSource = geoCodesList;
}
答案 0 :(得分:0)
除非async-await机器中存在一个错误(这是一个非常小但非零的可能性),你的方法中有四个位置可能会导致NullReferenceException:
locationTextBox.Text
searchString.Length
noLocationsFoundText.Visibility
routeLocationsList.ItemsSource
你确定这些都不是空的吗?根据异步框架处理错误报告的方式,我也不排除在await GetGeocodeAsync
中出现的问题,尽管堆栈跟踪建议不然。
顺便说一下,为什么要初始化List<GeocodeResponse>
并立即覆盖它?这不是问题,但看起来多余。
为了帮助您进行调试,正如@devha建议您可以在调用特定异常时将调试器设置为中断。在&#39; Debug&#39;菜单,选择&#39;异常&#39;,然后在CLR异常下检查NullReferenceException。现在,只要在调试时抛出其中一个,Visual Studio就会立即暂停并向您显示有问题的行。