Lösen DisconnectedContext in Visual Studio
Bekam ich immer einen DisconnectedContext (verwaltetes debugging-Assistent) wenn ich meine Anwendung mit Visual Studio. Google und docs, das kann passieren, wenn COM-Objekte auf STA aufgerufen werden, von anderen thread.
Allerdings, wenn ich mir durch all die threads, wenn das popup angezeigt wird, finde ich das nicht so etwas. (Und ich finde nichts komisches an alle).
Einige Ideen auf, wie kann ich den Weg finden, der DisconnectedContext ausgelöst wird?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand diese während der Suche für die gleiche Antwort, dachte, ich würde einen Kommentar hinzufügen...
Dieser Fehler ist es nahezu unumgänglich, in einer multi-threaded-app mithilfe von CLR-Objekten durch in-Prozess-interop - (transient-threads). Das problem ist, dass die CLR hatte nicht-deterministische Bereinigung von Objekten (die RCW ' s, mit Gewinde-Affinität auf die zugrunde liegende COM-Objekte). Es gibt keine Weise können Sie sagen, die Laufzeit zu bereinigen, die erstellten Objekte in einem thread (zumindest ohne die Schaffung einer anderen, nicht-deterministische Bereinigung handle für den thread); es ist eine design-Einschränkung der interop-Mechanismus. Angesichts der Tatsache, dass es keine Möglichkeit gibt, um immer sicher beenden ein Faden geschaffen hat jede CLR-Objekte ohne potenziell immer diese Fehlermeldung.
Beste Rat: nicht verwenden, CLR/interop, wenn Sie Ihr helfen können. Nächste beste Tipp: verwenden Sie COM+ - Prozess-isolieren Sie Ihre interop, so dass die CLR Leben können, in einem Prozess, der nie beendet threads (persistente thread pool oder gleichwertig). Nächste beste Beratung: begleiten Sie mich in der Weiterbildung zu informieren Microsoft über dieses design-level-problem mit Ihren-interop, und hoffe, dass Sie es zu beheben.
Dies ist eine ziemlich ernste Warnung, nicht ignorieren. Das Szenario ist, dass Sie erstellt ein COM-Objekt in einem thread und dieser thread beendet. Aber Sie halten mit diesem Objekt. COM kümmert sich um Objekte, die meldet sich nicht thread-sicher (auch bekannt als apartment-Thread), wird es automatisch Streckenposten alle Anrufe auf das Objekt auf dem thread, der es erstellt. Das kann nicht funktionieren, wenn dieser thread nicht mehr herum.
Ignorieren der Abmahnung kann produzieren gelegentliche und sehr schwer zu beheben threading Rennen Fehler. Zeug, das geht subtil falsch nur einmal in der Woche. Überprüfen Sie Ihren code, achten Sie darauf, wie das Objekt, das Sie beschwert, bekam erstellt.