ich ein Programm, das ich laufen und in der Mitte erhalte ich diese Meldung:seltsame Nachricht über Threads in C#
Managed Debugging-Assistent ‚ContextSwitchDeadlock‘ ein Problem in ‚C erkannt hat: \ Dokumente und Einstellungen \ Lena G \ Eigene Dateien \ SchoolStuff \ IR Information \ Home \ FianlProject \ finalProject \ finalProject \ bin \ Debug \ finalProject.vshost.exe '. Weitere Informationen: Die CLR konnte für 60 Sekunden nicht vom COM-Kontext 0x3407968 zum COM-Kontext 0x3407ad8 übergehen. Der Thread, der den Zielkontext/das Zielobjekt besitzt, führt höchstwahrscheinlich entweder eine nicht pumpende Wartezeit durch oder verarbeitet eine sehr lange laufende Operation, ohne Windows-Nachrichten zu pumpen. Diese Situation wirkt sich im Allgemeinen negativ auf die Leistung aus und kann sogar dazu führen, dass die Anwendung nicht mehr reagiert oder sich die Speicherbelegung im Laufe der Zeit ständig erhöht. Um dieses Problem zu vermeiden, sollten alle STA-Threads (single threaded apartments) Pump-Warte-Primitive (wie CoWaitForMultipleHandles) verwenden und während langer Betriebsvorgänge routinemäßig Nachrichten pumpen.
Ich verstehe, dass es etwas mit der Tatsache zu tun hat, dass es für 60 Sekunden ohne anzuhalten oder so etwas läuft? Wie ist es ein Problem? Ich habe auch [STAThread] vor dem Haupt meines Programms, denn wenn ich es entfernen dann es mir diese Meldung zeigt:
Eine nicht behandelte Ausnahme des Typs ‚System.Threading.ThreadStateException‘ in System.Windows.Forms.dll aufgetreten Weitere Informationen: Aktueller Thread muss auf Single Thread Apartment (STA) -Modus festgelegt werden, bevor OLE-Aufrufe vorgenommen werden können. Stellen Sie sicher, dass die Main-Funktion STAThreadAttribute enthält. Diese Ausnahme wird nur ausgelöst, wenn ein Debugger an den Prozess angehängt ist.
Wer weiß, wie ich dieses Problem lösen kann?
Vielen Dank im Voraus,
Lena
Wenn ich den Context Switch Deadlock ausschalten, kann es Schaden anrichten? Ich benutze Visual Studio 2008 .. –
Nichts wird explodieren. Sie könnten tatsächlich einen Deadlock haben. Du wirst schnell genug herausfinden, dein Programm wird einfrieren. –