Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WinForms-Anwendung hängt aus unerklärlichen Gründen
christof.k
myCSharp.de - Member



Dabei seit:
Beiträge: 160

Themenstarter:

WinForms-Anwendung hängt aus unerklärlichen Gründen

beantworten | zitieren | melden

Hallo,

ich habe eine relativ simple Anwendung geschrieben, welche neben der GUI zwei weitere Threads nutzt.

Auf meinen und anderen PC's läuft die Anwendung wie erwartet.
Auf manchen anderen PC's hängt sich die Anwendung vor dem Start eines Threads auf und nimmt keine Kommandos mehr entgegen.
Ich habe dies auf die folgende Zeile eingrenzen können indem ich in die ThreadFunction eine Ausgabe gelegt habe. Diese wird nicht aufgerufen.

MyThread = new Thread(new ThreadStart(ThreadFunction));
RxThread.Start();

Vielmehr hängt die Anwendung bei der Zeile

RxThread.Start();
da eine Ausgabe direkt danach nicht erfolgt.

Alle Kommunkationen der Threads mit der GUI laufen über Invoke aufrufe.

Das komische ist, sobald ich mit der rechten Maustaste auf das Programm in der Taskleiste drücke, läuft meine Anwendung weiter und der Thread wird gestartet....Ich habe dafür keine Erklärung.

Ich hoffe Ihr könnt mit dieser Wagen Aussage etwas anfangen oder zumindest einen Tip geben, was ich zu tun habe.

Danke
private Nachricht | Beiträge des Benutzers
christof.k
myCSharp.de - Member



Dabei seit:
Beiträge: 160

Themenstarter:

beantworten | zitieren | melden

Kleiner Nachtrag:

Wieso auch immer scheint es daran zu hängen, dass ich mit


            Console.SetOut(myTextWriter);
            Console.SetError(myErrorTextWriter);

die Consolen in eine RTF Textbox umzuleiten.
Ich kann mir nicht vorstellen, wie das mit dem anderen Thread in Verbindung steht, aber es ist so.

Kann ich mir irgend eine Art von Deadlock hier einhandeln?

Der genannte Thread macht am Anfang noch keine Ausgabe an die Console.

Mit der Hoffnung auf Hilft

Christof

P.S.: Die PC Abhängigkeit scheint zwischen Single- und Dualcore zu sein. Bei Dualcore klappts, bei Singlecore nicht......komisch
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo christof.k,

tja, aus der vagen Beschreibung ist es wirklich schwer, was konkretes abzuleiten.

Grundsätzlich kannst du dir mit Control.Invoke Deadlocks einhandeln.

Dass es auf einem Rechner läuft und auf einem anderen nicht, klingt nach einer Racing Condition.

Wenn du mit Konsolenausgaben testest, die in eine TextBox umgelenkt werden, dann ist das nicht wirklich ein Test, denn du weißt ja nie, ob die Ausgabe nicht erfolgt, weil das Programm vorher hängt oder weil es wegen des Umlenkens hängt. Ich würde auf letzteres tippen. Es gibt sonst keinen Grund, warum Thread.Start hängen sollte.

herbivore
private Nachricht | Beiträge des Benutzers
christof.k
myCSharp.de - Member



Dabei seit:
Beiträge: 160

Themenstarter:

beantworten | zitieren | melden

Tjojo...schwer für mich hier weiterzumachen.

Mich wundert nur, was passiert wenn ich mit der rechten Maustaste auf meine Applikation in der Taskleiste clicke, da dann dieser Deadlock aufgehoben wird. Dies würde bei der Analyse helfen.....

Christof
private Nachricht | Beiträge des Benutzers