Hallo,
habe mir aufgrund dessen, dass der Backgroundworker irgendwie keine richtigen Threads erstellt bzw. sie meiner Meinung nach Poolt eine kleine eigene Klasse gebaut, die den BackgroundWorker ersetzen soll. (Ich liebe es, wenn ich mich nicht um das sync. von Threads oder ähnliches kümmern muss!) Zusätzlich noch eine "Manager" Klasse / Scheduler für die Tasks (ein bisschen wie ein Timer). Leider habe ich immer folgendes Problem:
Ich erstelle viele hundert Test-Threads die nichts anderes machen wie bis 100 zu zählen und jeden Schritt an die Oberfläche melden. Manchmal ist es so, dass sich der UI-Thread aufhängt? 100% CPU Last und er lässt sich nicht mehr debuggen? Irgendwie komisch für mich....
Hier der Code für die "Task" Klasse:
pastebin.com/QjFvwC38
Hier der Code für die "TaskManager" Klasse (Scheduler):
pastebin.com/swNhMpuu
Zusätzlich verstehe ich nicht, warum .NET so extreme CPU last bei Threads verursacht. In .NET mit 500 Threads und UI Updates ca. 30% load. Mit MFC habe ich das gleiche probiert. 500 Threads und UI Updates ca. 00% Load (also dann kleiner 1%). Beides waren Release-Builds und außerhalb der IDE gestartet.... Managed Code, ja... aber so ein Unterschied?
Viele Grüße
Edit: Hinweis: Ich glaube, dass der UI-Thread sich verabschiedet liegt irgendwie, dass ich den Scheduler auch in einem Thread laufen lasse, der die anderen Threads startet. Falls jemand Zeit hätte, were es ja nett wenn er mal ein kleinen Blick auf das bisschen Code werden könnte.
habe mir aufgrund dessen, dass der Backgroundworker irgendwie keine richtigen Threads erstellt bzw. sie meiner Meinung nach Poolt eine kleine eigene Klasse gebaut, die den BackgroundWorker ersetzen soll. (Ich liebe es, wenn ich mich nicht um das sync. von Threads oder ähnliches kümmern muss!) Zusätzlich noch eine "Manager" Klasse / Scheduler für die Tasks (ein bisschen wie ein Timer). Leider habe ich immer folgendes Problem:
Ich erstelle viele hundert Test-Threads die nichts anderes machen wie bis 100 zu zählen und jeden Schritt an die Oberfläche melden. Manchmal ist es so, dass sich der UI-Thread aufhängt? 100% CPU Last und er lässt sich nicht mehr debuggen? Irgendwie komisch für mich....
Hier der Code für die "Task" Klasse:
pastebin.com/QjFvwC38
Hier der Code für die "TaskManager" Klasse (Scheduler):
pastebin.com/swNhMpuu
Zusätzlich verstehe ich nicht, warum .NET so extreme CPU last bei Threads verursacht. In .NET mit 500 Threads und UI Updates ca. 30% load. Mit MFC habe ich das gleiche probiert. 500 Threads und UI Updates ca. 00% Load (also dann kleiner 1%). Beides waren Release-Builds und außerhalb der IDE gestartet.... Managed Code, ja... aber so ein Unterschied?
Viele Grüße
Edit: Hinweis: Ich glaube, dass der UI-Thread sich verabschiedet liegt irgendwie, dass ich den Scheduler auch in einem Thread laufen lasse, der die anderen Threads startet. Falls jemand Zeit hätte, were es ja nett wenn er mal ein kleinen Blick auf das bisschen Code werden könnte.