Frage

Ich bin ein extrem seltsamen Fehler von hier, und ich bin nicht wirklich sicher, ob ich den richtigen Weg, es zu lösen folgend bin oder sogar, wie es zu lösen.

Hier ist das Problem, das ich mit Blick auf bin: Ich Debuggen eine WPF-Anwendung starten, die log4net, NHibernate und LINQ to NHibernate verwendet, und wenn ich versuche, aus der Datenbank meine Anwendung eine Entity zu bekommen und manchmal VS hängt für eine Menge Zeit , und nach einer Weile eine Ausnahme Dialog öffnet sich eine Meldung angezeigt, die folgende Informationen auf einem ContextSwitchDeadlock MDA enthalten:

  

Die CLR hat COM Kontext nicht gelungen, aus COM Kontext 0x34fc1a0 Übergang zu 0x34fc258 für 60 Sekunden. Der Thread, der die Zielkontext / Wohnung besitzt, ist höchstwahrscheinlich entweder eine nicht Pumpwarte tun oder die Verarbeitung sehr lange laufenden Betrieb ohne Nachrichten von Windows zu pumpen. Diese Situation hat in der Regel eine negative Auswirkung auf die Leistung und kann sogar auf die Anwendung immer nicht reagiert, oder die Speichernutzung führen kontinuierlich im Laufe der Zeit ansammeln. Um dies zu vermeiden

kopiert ich die Code-Dateien in ein neues Projekt und löschte das alte Projekt zu sehen, ob ich diese Meldung verschwinden könnte, dachte, es hatte etwas mit meiner Konfiguration zu tun. Ich begann zu einer Zeit, einige Dinge hinzugefügt, um zu sehen, was es verursacht wurde, und wenn ich log4net Konfigurationscode des Fehler enthalten erschien wieder. Zuerst habe ich eingeschlossen es durch Assembly und später Trog Code Konfiguration auf Anwendungsstart, und absolut nichts geändert: (

So, hier sind meine Ergebnisse:

  • Es geschieht nur, wenn ich log4net bin mit.
  • Es passiert, wenn NHibernate lädt ein Entity aus der Datenbank (träges Laden).

Ich weiß nicht, was könnte die Quelle dieses Fehlers sein. Es geschieht nur, wenn in Visual Studio debuggen. Ich habe nach den Schritten versucht, auf den „Aktivieren und Deaktivieren von MDAs“ -Abschnitt der folgenden Seite: http://msdn.microsoft.com/en-us/library/d21c150d.aspx , aber das funktioniert auch nicht, VS noch hängt und es der Speicherauslastung erhöht.

Wenn ich das Programm normalerweise nichts davon laufen geschieht, so dass ich bin ziemlich sicher, das ist keine Deadlock-Situation, da diese Frage schon sagt: contextswitchdeadlock (ich habe auch versucht, die Lösungen gepostet dort).

Aus diesem Grund habe ich zu deaktivieren log4net entschieden und es wieder aktivieren, wenn meine Anwendung bereitstellen.

Ich bin Entsendung diese Frage, um herauszufinden, ob jemand anderes diesen Fehler konfrontiert hat, oder wenn jemand hat einige Vorschläge, wie es zu lösen. Schließlich könnte es jemand anders helfen, diese sehr gleiches Problem.

Vielen Dank im Voraus,

Jorge Vargas.

War es hilfreich?

Lösung

Bei Verwendung der DebugAppender alle Entitäten in den Datenbanken geladen werden und alle an die Debug-Ausgabe geschrieben seine Daten. Das war was die ContextSwitchDeadlock MDA, da es tookmore als 60 Sekunden zu laufen.

Das Deaktivieren der DebugAppender mein Problem gelöst.

Dank Mauricio Scheffer für die Spitze.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top