Resolvendo o problema de NullReferenceException no Ad Control
Há um tempo atrás eu mostrei para vocês como usar o Ad Control da Microsoft para adicionar anúncios em sua aplicação no Windows Phone.
Depois de usar algum tempo, percebi que de vez em quando o controle lançava uma NullReferenceException, fazendo minha aplicação desligar.
O que ocorre é um bug no controle de anúncios. Quando um usuário sai da aplicação no meio do download de anúncio e volta para ela novamente, o controle se perde.
Vi na Internet várias formas de resolver o problema, mas todas utilizando eventos da View para adicionar e remover o controle dinamicamente, conforme o usuário navega pela aplicação.
Essas soluções geram muito código “feio” na minha aplicação, sem contar o trabalho de fazer isso em cada View que possui um anúncio (esqueceu em uma delas, já era…).
Mas nem tudo está perdido: aqui vai uma forma limpa e centralizada de resolver o problema. Basta adicionar estas linhas no método Application_UnhandledException do seu App.xaml.
if (e.ExceptionObject.GetType() == typeof(NullReferenceException) &&
e.ExceptionObject.StackTrace.Contains(“Microsoft.Advertising.Mobile.Shared.WebRequestWrapper.WebRespCallback”)) {
e.Handled = true;
return;
}
if (System.Diagnostics.Debugger.IsAttached) {
// An unhandled exception has occurred; break into the debugger
System.Diagnostics.Debugger.Break();
}
}
Agora toda vez que a excessão ocorrer, vamos simplesmente ignorá-la, sem piedade :)