2013-11-28 6 views
11

は、フェッチ作成、&削除データを更新するためにWeb Serviceを使用していますWP8アプリケーション&表示を作成していますそれ。
は、今の問題はそれは「『System.Reflection.TargetInvocationException』はSystem.Windows.ni.dllで発生しました」タイプの未処理の例外を発生inWindows電話

タイプ の未処理の例外スローすることにより、自分のアプリケーションがクラッシュしinWindows電話番号「『System.Reflection.TargetInvocationException』はSystem.Windows.ni.dll に発生しました」ということです

enter image description here

この例外のスタックトレースはありません&これは数時間スタックされています。そして、私はこの例外が通常より頻繁にサービスを呼び出すたびに発生することに気づいたが、私は実際の理由を得ていなかった。

これは本当に便利です。
1.この例外の種類は?
2.これはどのような状況ですか?
3.この例外のため、アプリのクラッシュをどのように処理できますか?

+0

のInnerException? – Olivier

+0

@Olivier App.xaml.csのApplication_UnhandledExceptionイベントをスローする – asitis

+0

つまり、TargetInvocationExceptionは投げられた実際の例外をラップする単なる例外です...あなたのException.InnerExceptionプロパティへの例外は何ですか? – Olivier

答えて

13

を考える私はワット/ sのパフォーマンスをよりよく行うことをお勧めしたり、再帰呼び出しを使用することができますが、それは問題を解決することはできませんコメント

あなたが正しいです。内部例外オブジェクトは "at MyApp.ViewModels.CreateViewModel.d__61.MoveNext()---例外がスローされた前の場所からのスタックトレース--- System.Runtime.CompilerServices.AsyncMethodBuilderCore.b__0(オブジェクト状態)で終了します。 "メッセージ:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

ちょうどどこかで、待たずに非同期メソッドを呼び出していることがわかります。メソッドがタスクを返すときは常にそれを待ちます。

あなたの内側の例外は、内部例外を持つ必要があります(つまり、$ exception.InnerException.InnerException whichesスタックトレースあなたとNullReferenceExceptionの場所が表示されます)

あなたのコードで例外が処理されていない場合

UnhandledExceptionイベントが呼び出されますあなたのコードでは、アプリはそれを処理する方法を知らない。 デフォルトでは、アプリがクラッシュします。 しかし、そのような場合にアプリがクラッシュするのを防ぐことができます。詳細については、thisを参照してください。

問題を「クリーンな方法」で解決するには、コードが待たれていない場所を見つけて修正する必要があります。つまり、どこかにあなたが見つける:

myObject.DoSomethingAsync(); // DoSomethingAsync() returns a task. 

変更を:

try 
{ 
    await myObject.DoSomethingAsync(); // DoSomethingAsync() returns a task. 
}catch(Exception ex) 
{ 
    // display error message or whatever 
} 

を[編集]これは、エラーを処理しますが、何が本当に解決したいのは、あなたのnullref例外の原因であるだろう。私はあまり手がかりを持っていませんが、スレッドの並行性の問題のように見えます。

+4

このテキストは太字でなければなりません。 "メソッドがタスクを返すときは、常にそれを待っています。"私のコードで他の場所を探していたので、何時間ものデバッグから私を救った。 –

3

1.この例外の種類は?

この例外は、w/sにアクセスしようとしているときに発生し、オーバーロードされます。

2.これはどのような状況ですか?私たちがあるため、この例外のアプリのクラッシュを扱うことができる3.How

ビジネスロジックは、複雑またはDBロックまたは応答しない

のですか?それを処理するための

私は

+0

これは、アプリがサービスリクエストを頻繁に送信する場合にのみ発生します。アプリの通常の実行では、これはまったく発生しません。私のアプリはWindows Phone Storeの提出に失敗しますか? – asitis

0

それともInvokeRequired使用タスク

delegate void SetDataSourceHandler(DataTable data); 

public void SetDataSource(dDataTable data) 
{ 
    if (gvData.InvokeRequired) 
      { 
       gvData.Invoke(new SetDataSourceHandler(SetDataSource), new object[] { data }); 
       return; 
      } 
      nodosDataTableBindingSource.DataSource = data; 

     } 

async Task ProcesarMensajes() 
{ 
... 
SetDataSource(GetList(nodes)); 
} 
関連する問題