Ich versuche, einige Informationen asynchron in SQL Server innerhalb einer MVC 4-Controller-Aktion zu protokollieren, die .NET 4.0 mithilfe von AsyncTargetingPack abzielt. Ich würde direkt zu .NET 4.5 springen, aber meine App lebt in Azure und wir warten immer noch auf das Update ...
Dieser Code funktioniert wie erwartet (eine Zeile wird ohne Ausnahmen in meine Datenbank geschrieben):
%Vor%Und dieser Code löst eine NullReferenceException aus:
%Vor%NullReferenceException: "Objektverweis nicht auf eine Instanz eines Objekts festgelegt."
%Vor%Ich habe keinen Einblick in die Ausnahme, da es sich um externen Code handelt. Ich verstehe nicht, warum der zweite Codeblock fehlschlägt. Dies ist der Code, den ich ursprünglich geschrieben habe.
Was mache ich falsch?
Ich hatte gerade ein sehr ähnliches Problem (NullReference von AssociateWithCurrentThread bei Verwendung einer Protokollierungsaufgabe).
Das Problem, das ich hatte, war, dass die ursprüngliche Aktion den Abschluss der Protokollierungsaufgabe nicht abwartete. Wenn das Protokoll beendet ist und versucht, dem ursprünglichen Thread wieder beizutreten, wird eine nullReference ausgelöst, weil der ursprüngliche Thread beendet wurde.
Dies wurde für mich gelöst, indem sichergestellt wurde, dass der Anforderungscontroller auf die Protokollierungsfunktion gewartet hat.
Dataflow funktioniert nur mit .NET 4.5. Die Tatsache, dass Sie es unter .NET 4.0 ausführen, wird nicht unterstützt und ist wahrscheinlich der Grund dafür, dass Sie fehlerhafte Ausnahmen sehen.
Tags und Links c# task-parallel-library .net-4.0 tpl-dataflow