2012-04-14 36 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

從它的外觀來看,很可能您的MainPage中有一個DispatcherLoad方法,並且您在該方法中調用了一個lambda函數。喜歡的東西:

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

的誤差在lambda存在的(我的樣品中:在Console.WriteLine("hello world;")部分)。所以現在你只需要找到正確的lambda,並找出你的代碼崩潰的原因。

鑑於「對象發件人,EventArgs e」參數,它可能是一個事件處理程序。你是否在DispatcherLoad函數中的某個地方將一個lambda分配給一個事件處理程序?例如:

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

注:如果在你的方法很多lambda表達式,你找不出哪一個崩潰,你可以嘗試用反射器開口的組件(http://www.reflector.net/) 。它會反編譯你的dll,然後你可以看到哪個lambda叫做「<DispatcherLoad> b__1」。

+0

謝謝,KooKiz。 – ellic 2012-04-15 05:39:50

相關問題