Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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

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

  • Autor

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)

  • Autor

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?

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.
  • Autor

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

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.

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.