我的应用程序在WiFi上运行良好,但当它通过3G连接时,它就崩溃了。
以下是代码:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
if (!App.ViewModel.IsDataLoaded)
{
await App.ViewModel.LoadDataAsync();
DataContext = App.ViewModel;
}
}LoadDataAsync代码
public async Task<bool> LoadDataAsync()
{
Uri uri = new Uri("http://www.28cinema.az/eng/");
HttpClient client = new HttpClient();
HtmlDocument htmlDocument = new HtmlDocument();
HtmlNode htmlNode = new HtmlNode(0, htmlDocument, 1);
MovieGroup data = new MovieGroup();
string HtmlResult;
HtmlResult = await client.GetStringAsync(uri);
data.Title = "Today";
htmlDocument.LoadHtml(HtmlResult);
htmlNode = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='poster_wrapper']");
for (var i = 0; i < (htmlNode.ChildNodes.Count); i++)
{
data.Items.Add(new MovieData
{
DetailsUrl = htmlNode.SelectSingleNode("div[" + (i + 1) + "]/div[1]/div[1]/a[1]").GetAttributeValue("href", ""),
Title = htmlNode.SelectSingleNode("div[" + (i + 1) + "]/div[1]/div[1]/a[1]").InnerText,
Poster = htmlNode.SelectSingleNode("div[" + (i + 1) + "]/img").GetAttributeValue("src", "No poster"),
Cinema = "28 Cinema"
});
}
Today = data;
IsDataLoaded = true;
return true;
}异常消息:没有网络连接,任务被取消。
堆栈跟踪:
at Cineman.ViewModels.MovieModel.<CreateTodayGroupAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Cineman.ViewModels.MovieModel.<LoadDataAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Cineman.MainPage.<OnNavigatedTo>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)如有任何建议,将不胜感激。
UPD:进一步查看显示了断点期间局部变量中的一行:'htmlNode.InnerHtml‘抛出了'System.NullReferenceException’类型的异常。
发布于 2014-02-07 20:12:46
当我重新启动Visual时,它就解决了。奇怪!
发布于 2014-02-07 18:00:11
正如您所发现的,如果您试图在没有网络连接的情况下执行HTTP请求,它将引发异常。
我建议您处理异常,例如,使用try/catch。如何向用户显示异常详细信息取决于您。
https://stackoverflow.com/questions/21634531
复制相似问题