C# ThreadState in WindowsForm überwachen

MarcJ

Grünschnabel
Hallo,

ich führe einen FileSystemWatcher in einem eigenen Thread aus. Jetzt würde ich gerne über ein Form den Status des Threads ausgeben,also eine Art Überwachung ( grün ,Thread läuft ; rot , Thread gestoppt).

Ich bin mir allerdings nicht sicher wie ich den Status richtig überwachen kann.

Hat da jemand eine Idee?

Gruß
Marc
 
Zuletzt bearbeitet:
Ist ungetestet und soll nur die herangehensweise demonstrieren.

Code:
while ( thread.ThreadState == ThreadState.Running)
{
     //grün
}

Ich denke es ginge auch mit

Code:
if(thread.isAlive == true)
{
      //grün
}
else
{
     //rot
}
 
ja das wäre so die Notlösung,dachte eventuell an ein Ereignis sobald sich der Status ändert,allerdings bin ich nicht ganz sicher wie ich das
implementieren könnte.

Gruß
Marc
 
Thread bietet dazu kein Ereignis an. Wieso willst du das auch überprüfen/wissen? Es sollte doch reichen zu wissen, ob der Thread per IsAlive true zurück liefert oder nicht.
 
ja mein Problem ist im Moment ,dass ich den FileSystemWatcher in einem Thread gestartet habe. Jetzt würde ich in einem Form gerne anzeigen,dass die Überwachung aktiv ist.
Mit

Code:
while(Thread.isAlive == true)

hätte ich ja das Problem ,dass das Form blockiert ist.Ich müsste also das ganze in eine Funktion packen,die ich wieder in einem Thread laufen lassen,oder?

Eine weitere Frage: Kann ich den FileSystemWatcher ,wenn er einmal wartet abbrechen? Da dieser im Thread in den Wartezustand geht ,muss ich mit
Code:
Thread.Abort()
abbrechen,meine elegantere Lösung mit einer RequestStop Methode ist somit nämlich wohl auch hinfällig.

Gruß
Marc
 
Wird der Watcher nur ausgeführt, wenn deine Gui gestartet ist? Warum dann die Überwachung ob er aktiv ist oder nicht? Denn schließlich sollte deine Applikation ja wissen was es startet.
 
ja der wird ganz normal über einen Button gestartet,hab dann allerdings eine weitere Form auf welchem ich verschiedene Informationen sammeln will ,um einen Überblick zu geben welche Threads am laufen sind und was gerade
in Bearbeitung ist. Darunter auch der FSW.
 
Wieso arbeitest du nicht einfach mit einem Timer, der beispielsweise alle 3 Sekunden deine Threads durchgeht und überprüft ob IsAlive==true? Damit kannst du deine Anzeige realisieren und entsprechend darauf reagieren.
 
Halb :offtopic:

Wieso für den FSW überhaupt einen eigenen Thread? Der hat doch schon einen eigenen.
Über das Property RaisingEvents kriegst du doch schon die Info, ob er läuft oder nicht.
 
Naja, vielleicht hat er einen nicht näher beschriebenen Grund, die gesamte Verarbeitung in einem eigenen Thread laufen zu lassen
 
Zurück