1

私のWindowsPhoneアプリが偶然に警告なしに終了するのは少し奇妙ですが、ほとんどの場合、正常に動作します。

次に、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)
]

例外の原因を突き止めるための詳細な情報はありません。誰かが以前にこの例外に遭遇し、それに対する解決策を得たことがありますか?

任意の提案をいただければ幸いです。

4

1 に答える 1

2

見た目からすると、MainPageにDispatcherLoadメソッドがあり、そのメソッドでラムダ関数を呼び出している可能性があります。何かのようなもの:

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

エラーはラムダで発生しています(私のサンプルでは:Console.WriteLine("hello world;")パーツ)。したがって、適切なラムダを見つけて、コードがクラッシュする理由を見つける必要があります。

「オブジェクト送信者、EventArgs e」パラメーターを考えると、おそらくイベントハンドラーです。DispatcherLoad関数のどこかでイベントハンドラーにラムダを割り当てていますか?例えば:

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

注:メソッドに多くのラムダがあり、どれがクラッシュしているかわからない場合は、Reflector(http://www.reflector.net/)を使用してアセンブリを開いてみてください。dllが逆コンパイルされ、どのラムダが「<DispatcherLoad>b__1」と呼ばれるかを確認できます。

于 2012-04-14T10:48:10.347 に答える