Gewusst wie: Debuggen und lösen eine 'DisconnectedContext' crash?

Ich habe eine GUI-app, die eine Verbindung zu einem sensor, der Daten sammelt und verarbeitet Sie im hintergrund mit BackgroundWorker threads.

So wie es da steht bin ich Entsendung Daten auf der GUI mit Hilfe der ProgressChanged die schien gut zu funktionieren zu beginnen. Ich habe seit steigerte die Daten, Preisen und haben entdeckt, ein problem, wenn die software laufen gelassen für ein paar Minuten, die Menge der Prozessor-Auslastung angezeigt wird, zur Rampe herauf, bis er in der Nähe von 100% auf beiden cores auf meinem Rechner und an diesem Punkt, ich bekomme eine Fehlermeldung die lautet:

Managed Debugging-Assistent 'DisconnectedContext' hat ein problem festgestellt in 'myapp.exe'. Zusätzliche Informationen: der Kontext 0xe2ba0 getrennt ist. Die Freigabe der Schnittstellen aus dem aktuellen Kontext (Kontext 0xe2d10). Dies kann dazu führen, Korruption oder Verlust von Daten.

Ich habe einige Sachen rund um das web, die suggeriert, dass dies passieren kann, wenn eine GUI app ist nicht in der Lage zu Pumpen, Nachrichten schnell genug. Ich habe bemerkt, ich kann das provozieren der gleiche Absturz passiert schneller, wenn ich die Größe des Fensters ändern sich rasch (d.h. Pumpe eine Last, mehr Nachrichten), unterstützt die Theorie, die ich denke?

Also die Fragen hier sind:

  1. Ob jemand stimmt mit meiner Hypothese über die Nachricht Pumpen?
  2. Ob es eine andere Erklärung?
  3. Gibt es eine Möglichkeit, ich kann es beweisen (peek die Anzahl der Nachrichten in der Warteschlange vielleicht)?
  4. Sind diese alle bad code smells, die vorschlagen, ich werde über dieses der falsche Weg ist?

Jede Beratung wäre sehr dankbar angenommen.

InformationsquelleAutor Jon Cage | 2010-01-12
Schreibe einen Kommentar