Zum Inhalt springen

Thread State (war: Debugfehler, Kompilerfehler? Großes Fragezeichen)


Empfohlene Beiträge

Geschrieben

Hallo.

Ich habe ein riesiges Problem:

debugger.png

Der ThreadState ist Running, trozdem springt er nicht in die Anweisung, dass er true zurückgeben soll.

Ide: Visual C# 2008 Express, .net 3.5 framework.

Das Problem macht mich noch krank.

Liebe Grüße

errox

Geschrieben

Verschoben -> .NET, Threadtitel angepasst.

Hier steht, dass die Threadstates nur für wenige Debuggingszenarios sinnvoll sind.

Your code should never use thread state to synchronize the activities of threads.

Was willst du denn damit überhaupt erreichen?

Geschrieben (bearbeitet)

Erstmal, um welche ThreadState Enumeration geht es hier? Es gibt zwei. Es wäre immer hilfreich, ein komplettes Beispiel zu posten und nicht nur einen kleinen Ausschnitt.

Ansonsten mache ich mal die Vermutung, dass es sich um die Enumeration aus System.Threading handelt:

Schreibe z.B.


if(_listenerThread.ThreadState & (System.Threading.ThreadState.Unstarted | System.Threading.ThreadState.Stopped) == 0)

{

   // ...

}

und probiere es erneut. Gegebenenfalls könnte man noch auf ThreadState.Aborted testen, je nachdem wie der Thread eingesetzt wird.

Bearbeitet von Bubble
Geschrieben

Ich glaub ich lass es einfach:

unbenanntmsc.jpg

Was willst du denn damit überhaupt erreichen?

Also ich habe eine Klasse, die Intern einen Thread startet um Daten zu empfangen. Eine Endlosschleife.

Ich dachte mir, ich mache ein Property dass mir den Status als Bool gibt und ihn auch als Bool zurückgibt (running = true, else = stop)

Geschrieben
Ich dachte mir, ich mache ein Property dass mir den Status als Bool gibt und ihn auch als Bool zurückgibt (running = true, else = stop)
Ja, aber zu welchem Zweck? Was gedenkst du mit dieser Information zu machen?
Geschrieben

Also falls eine Exception geschmissen wird (Zielserver ist Offline) und diese Exception gefangen wird, hält der Thread nicht an. Er läuft weiter.

Mein Status ist aktuell dass diese Exception ausreicht um den Thread anzuhalten.

Oder Sollte ich einfach vor der Exception den Thread anhalten?

Geschrieben
Also falls eine Exception geschmissen wird (Zielserver ist Offline) und diese Exception gefangen wird, hält der Thread nicht an. Er läuft weiter.
Wenn in einem anderen Thread eine Exception fliegt, ist es normal, dass die anderen Threads weiterlaufen. Oder meinst du in diesem Thread?

Mein Status ist aktuell dass diese Exception ausreicht um den Thread anzuhalten.
Ich verstehe nur Bahnhof. Was meinst du mit "ausreichen"?

Oder Sollte ich einfach vor der Exception den Thread anhalten?
Ich verstehe immer noch nicht, was du vorhast. Was willst du mit der Information, die dir dieses Property liefert.
Geschrieben

Ok ich glaube mal ich erkläre das mal genauer:

Ich hab eine Klasse die eine Netzwerkverbindung einfacher Verwaltet.

In der Klasse wird ein Thread gestartet, der im Hintergrund läuft und Daten empfängt. Werden Daten empfangen, wird ein Event gefeuert. (_listenerThread)

Ebenfalls wird in einem Intervall die Verbindung durch ein Send() geprüft. Wenn der Zielserver nicht erreichbar ist, wird eine Exception geschmissen.

Diese Exception hält den _listenerThread an. Nehmen wir an, die Exception wird durch ein catch {} gefangen, dann läuft der _listenerThread weiter, obwohl der Server offline ist.

Jetzt ist mir aber etwas Besseres aufgefallen :D Im Catch Block soll einfach ein Disconnect() erfolgen, er hält auch den Thread an.

Trozdem vielen Dank für die Hilfe

Liebe Grüße

errox

Geschrieben
Diese Exception hält den _listenerThread an.
Wenn du sie nicht fängst, wird die Exception den Thread beenden, nicht anhalten.

Nehmen wir an, die Exception wird durch ein catch {} gefangen, dann läuft der _listenerThread weiter, obwohl der Server offline ist.
Das hängt ja nun davon ab, was du in dem catch tust. Aber das hast du ja offenbar schon selbst gemerkt.
Geschrieben

Warum hast Du nicht probiert, was ich geschrieben habe? Und zwar die if-Abfrage durch


if((_listenerThread.ThreadState & (System.Threading.ThreadState.Unstarted | System.Threading.ThreadState.Stopped)) == 0)

zu ersetzen?

Ich frage mich, warum ich überhaupt versucht habe, zu helfen, wenn ich ignoriert werde.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...