errox Geschrieben 3. Januar 2010 Geschrieben 3. Januar 2010 Hallo. Ich habe ein riesiges Problem: 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 Zitieren
Klotzkopp Geschrieben 4. Januar 2010 Geschrieben 4. Januar 2010 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? Zitieren
Guybrush Threepwood Geschrieben 4. Januar 2010 Geschrieben 4. Januar 2010 Ich denke das Problem wird der Satz davor sein There are two thread state enumerations, System.Threading..::.ThreadState and System.Diagnostics..::.ThreadState. Zitieren
Bubble Geschrieben 4. Januar 2010 Geschrieben 4. Januar 2010 (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 4. Januar 2010 von Bubble Zitieren
errox Geschrieben 4. Januar 2010 Autor Geschrieben 4. Januar 2010 Ich glaub ich lass es einfach: 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) Zitieren
Klotzkopp Geschrieben 4. Januar 2010 Geschrieben 4. Januar 2010 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? Zitieren
errox Geschrieben 4. Januar 2010 Autor Geschrieben 4. Januar 2010 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? Zitieren
Klotzkopp Geschrieben 4. Januar 2010 Geschrieben 4. Januar 2010 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. Zitieren
errox Geschrieben 4. Januar 2010 Autor Geschrieben 4. Januar 2010 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 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 Zitieren
Klotzkopp Geschrieben 4. Januar 2010 Geschrieben 4. Januar 2010 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. Zitieren
Bubble Geschrieben 4. Januar 2010 Geschrieben 4. Januar 2010 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. Zitieren
Empfohlene Beiträge
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.