Laden...

Wie einen "Loop" Thread am Ende des Programms beenden?

Erstellt von IncepTer vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.245 Views
I
IncepTer Themenstarter:in
24 Beiträge seit 2016
vor 6 Jahren
Wie einen "Loop" Thread am Ende des Programms beenden?

Hallo Freunde,

ich komme immer besser mit C# voran und die Sprache gefällt mir mehr und mehr.
Mein Problem:

Ich möchte gern eine gewisse Aufgabe in einen eigenen Thread auslagern. Es soll z.B. immer ein Verzeichnis überwacht und dabei die Ordner gezählt werden. (Nur als Beispiel).
Dabei kommt es logischerweise ab und an zu Fehlern, wenn der Eltern Thread zuerst geschlossen wird.

Dabei mache ich es z.Z. so: (Pseudo Code)


Thread zaehle  = new Thread(Aufgabe);
zaehle.start;

private void Aufgabe(){
   Zaehle.Ordner;
   Thread.Sleep(2000);
   Aufgabe();
}

Ich denke Ihr wisst, was ich meine.
Ist das der richtige Ansatz dafür? Was sollte ich stattdessen verwenden?

Vielen Dank für Eure Hilfe =)

849 Beiträge seit 2006
vor 6 Jahren

Hallo IncepTer,

schau Dir mal Cancellation in Managed Threads an.

A
764 Beiträge seit 2007
vor 6 Jahren

Hallo IncepTer,

Es soll z.B. immer ein Verzeichnis überwacht und dabei die Ordner gezählt werden. (Nur als Beispiel).

Nur als Anmerkung: dafür eignet sich unter Umständen auch der FileSystemWatcher

Für die Threading-Geschichten könntest du dir auch mal System.Threading.Tasks anschauen. Da sind unter anderem die Keywords async/await interessant.

Richtig umgesetzt brauchst du für deine Anwendung eventuell gar keinen Loop-Thread. Threading würden dann einfach da verwendet werden, wo es gebraucht wird.

Das Alles ist nur als Info und Denkansatz gedacht, für Interessierte.

Viele Grüße
Alf