wake-up-neo.com

Wenn es auftritt Eine unbehandelte Ausnahme des Typs "System.Reflection.TargetInvocationException" ist in System.Windows.ni.dll in "Windows Phone" aufgetreten

Erstellen Sie eine WP8-Anwendung, die Web Service zum Abrufen, Erstellen, Aktualisieren und Löschen von Daten und zum Anzeigen von Daten verwendet. 
Jetzt besteht das Problem darin, dass meine Anwendung durch Wurf abstürzt 

Eine nicht behandelte Ausnahme vom Typ "'System.Reflection.TargetInvocationException' in System.Windows.ni.dll" in Windows Phone aufgetreten

enter image description here

Für diese Ausnahme gibt es keine Stapelverfolgung. Ich bin stundenlang mit dieser Spur verbunden. Ich habe festgestellt, dass diese Ausnahme immer dann auftritt, wenn der Dienst häufiger als normal aufgerufen wird. Ich habe jedoch nicht den eigentlichen Grund dafür gefunden.

Es ist wirklich hilfreich zu wissen 
1. Welche Art von Ausnahme ist das? 
2. Unter welcher Bedingung wird dies passieren? 
3.Wie können wir den App-Absturz aufgrund dieser Ausnahme bewältigen?

12
asitis

Dein Kommentar

Du hast recht . Ich muss ein inneres Exception-Objekt sagen "at MyApp.ViewModels.CreateViewModel.d__61.MoveNext () --- Ende des Stack-Trace vom vorherigen Speicherort, an dem die Exception ausgelöst wurde --- at System.Runtime.CompilerServices.AsyncMethodBuilderCore.b__0 (Objektstatus) "Nachricht: Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

zeigt nur, dass Sie irgendwo eine asynchrone Methode aufrufen, auf die nicht gewartet wird: Wenn eine Methode eine Task zurückgibt, warten Sie immer darauf.

Ihre innere Ausnahme sollte eine innere Ausnahme haben (d. H. $ Exception.InnerException.InnerException, mit deren Stacktrace der Speicherort Ihrer NullReferenceException angezeigt wird.)

Das UnhandledException-Ereignis wird ausgelöst, wenn eine Ausnahme in Ihrem Code nicht von Ihrem Code behandelt wurde und die App nicht weiß, wie sie damit umgehen soll in diesen Fällen abstürzen. Siehe das um mehr darüber zu erfahren.

Um Ihr Problem "auf die saubere Art" zu beheben, müssen Sie den Ort suchen, an dem Ihr Code nicht erwartet wird, und ihn beheben. dh irgendwo findest du:

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

Ändern Sie es :

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

[edit] Hiermit wird der Fehler behandelt. Was Sie jedoch wirklich beheben möchten, ist der Grund für Ihre Nullref-Ausnahme. Ich habe nicht so viele Hinweise, aber es sieht aus wie ein Thread-Nebenläufigkeitsproblem.

14
Olivier

1.Welche Art von Ausnahme ist das? 

diese Ausnahme tritt auf, wenn Sie versuchen, auf ein W/S zuzugreifen, und es wird überlastet.

2. Unter welcher Bedingung wird dies passieren? 

Geschäftslogik ist kompliziert oder DB-Sperre oder reagiert nicht

3.Wie können wir den App-Absturz aufgrund dieser Ausnahme bewältigen?

um damit umzugehen, empfehle ich, die Leistung der W/S zu verbessern, oder Sie können rekursive Aufrufe verwenden, aber das Problem wird dadurch nicht gelöst

3
techloverr

Oder InvokeRequired bei Verwendung von Task

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));
}
0
Carlos