Laden...

Bei jeder Berechnung einen neuen Thread aufmachen

Erstellt von macke_a vor 15 Jahren Letzter Beitrag vor 15 Jahren 687 Views
M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren
Bei jeder Berechnung einen neuen Thread aufmachen

Guten Morgen...

Für eine Aufgabe die ich in einem Thread abarbeiten lassen möchte, will ich bei jeder Nutzung einen neuen Thread aufmachen.

Wird der Aufgabe im Thread abgearbeitet, soll sich der Thread beenden. Wird die Aufgabe wieder benötigt, so starte ich den Thread zum wiederholten mal neu.

Kann mir jemand von Euch mitteilen, wie ich mein Vorhaben am einfachsten realisieren kann?

Gruss macke_a

193 Beiträge seit 2006
vor 15 Jahren

ThreadPool.QueueUserWorkItem() wäre eine Möglichkeit.

Gruß Jake

3.971 Beiträge seit 2006
vor 15 Jahren

Für eine Aufgabe die ich in einem Thread abarbeiten lassen möchte, will ich bei jeder Nutzung einen neuen Thread aufmachen.

Erstelle für sowas keine eigenen Threads, sondern nutze einen ThreadPool. Der ThreadPool aus System.Threading reicht dafür meist vollkommen aus. Wenn du einen Delegate hast, kannst du auch DelegateInstance.BeginInvoke aufrufen, dies führt auch ein ThreadPool.QueueUserWorkItem durch.

Das Erstellen eines Threads verschlingt viele wertvolle Ressourcen und auch performance, die du dir ersparen kannst, wenn du bereits erstellte, wartende Threads aus einem ThreadPool benutzt. Fein-Tuning kannst du beispielsweise über die Funktion ThreadPool.SetMinThreads betreiben, die dafür sorgt, dass eine Mindestanzahl von Threads vom ThreadPool verwaltet wird.

Fingerweg allerdings von ThreadPool.SetMaxThreads. Durch das Herabsetzen diesen Wertes kann es schnell zu Deadlocks führen.

Bei langlebigen Threads ist es allerdings besser, du erstellst einen seperaten Thread dafür.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...