2012-04-14 3 views
1

Странно, что мое приложение для Windows Phone выйдет без какого-либо предупреждения случайно, большую часть времени он отлично работает.В чем причина этого исключения в Windows Phone

Тогда я проследить Application_UnhandledException, найти, что сообщение об исключении:

[ExceptionMessage]:[NullReferenceException] 
[StackTrace]:[ 
    at wpapp.MainPage.<DispatcherLoad>b__1(Object sender, EventArgs e) 
    at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args) 
    at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName) 
] 

Там нет подробной информации для меня, чтобы выяснить причину исключения. Кто-нибудь встретил это исключение раньше и получил решение для этого?

Любые предложения будут оценены.

ответ

2

С учетом этого, вероятно, у вас есть метод DispatcherLoad в вашем MainPage, и вы вызываете функцию лямбда в этом методе. Что-то вроде:

private void DispatcherLoad() 
    { 
     this.Dispatcher.BeginInvoke(() => Console.WriteLine("hello world;")); 
    } 

Ошибка встречающийся в лямбда (в моем примере: в Console.WriteLine("hello world;") часть). Итак, теперь вам нужно найти нужную лямбду и выяснить, почему ваш код падает.

Учитывая параметры «отправитель объекта, EventArgs e», это, вероятно, обработчик событий. Вы назначаете lambda для обработчика событий где-нибудь в функции DispatcherLoad? Например:

private void DispatcherLoad() 
    { 
     this.Button.Click += (sender, e) => Console.WriteLine("hello world;"); 
    } 

Примечание: если есть много лямбды в вашем методе, и вы не можете понять, какой из них происходит сбой, вы можете попробовать открыть сборку с отражателем (http://www.reflector.net/) , Он декомпилирует вашу dll, и вы сможете увидеть, какая лямбда называется «<DispatcherLoad> b__1».

+0

Спасибо, KooKiz. – ellic

Смежные вопросы