Hallo,
ich habe mal wieder eine kleine Windows Forms Anwendung für mich geschrieben. Das Programm als solches Funktioniert auch, nur mich treibt die Frage umher, wie man verhindern kann das Windows Forms Anwendungen einfrieren.
Ich will das einmal näher ausführen. Angenommen ich habe eine aufwendige rekursive Funktion, die aufgerufen wird sobald ein Button gedrückt wurde. Dann kommt es häufig vor, dass das Programm einfriert. Je nachdem wie aufwendig der Funktionsaufruf ist, kann dies auch mal etwas dauern bis zu einer Minute, in der das Fenster nicht ansprechbar ist! Im Task Manager erscheint dann auch "Keine Rückmeldung". Das Programm selbst fängt sich aber und nach etwa einer Minute habe ich wieder Kontrolle über das Programm.
Das sind beispielsweise Dinge, die passieren, wenn man eine sehr große Textdatei nach einem speziellen Suchstring durchsucht oder bei Verzeichnisstrukturen.
Meine Frage ist nun, wie kann man den generell verhindern, dass Windows Forms Applikationen einfrieren? ISt Multithreading da eine Möglichkeit? Fernen würde ich gerne diesen Prozess auch mit einer Progressbar visualisieren wollen. Das dürfte ja vermutlich bekannt sein, dass es Suchprogramme gibt, die dann eben nicht einfrieren, sondern dem Nutzer beispielsweise über eine Progressbar informieren, dass derzeit noch gesucht wird, das würde ich gerne koppeln wollen. Meine Frage ist daher, wie gestaltet man sowas?
ich habe mal wieder eine kleine Windows Forms Anwendung für mich geschrieben. Das Programm als solches Funktioniert auch, nur mich treibt die Frage umher, wie man verhindern kann das Windows Forms Anwendungen einfrieren.
Ich will das einmal näher ausführen. Angenommen ich habe eine aufwendige rekursive Funktion, die aufgerufen wird sobald ein Button gedrückt wurde. Dann kommt es häufig vor, dass das Programm einfriert. Je nachdem wie aufwendig der Funktionsaufruf ist, kann dies auch mal etwas dauern bis zu einer Minute, in der das Fenster nicht ansprechbar ist! Im Task Manager erscheint dann auch "Keine Rückmeldung". Das Programm selbst fängt sich aber und nach etwa einer Minute habe ich wieder Kontrolle über das Programm.
Das sind beispielsweise Dinge, die passieren, wenn man eine sehr große Textdatei nach einem speziellen Suchstring durchsucht oder bei Verzeichnisstrukturen.
Meine Frage ist nun, wie kann man den generell verhindern, dass Windows Forms Applikationen einfrieren? ISt Multithreading da eine Möglichkeit? Fernen würde ich gerne diesen Prozess auch mit einer Progressbar visualisieren wollen. Das dürfte ja vermutlich bekannt sein, dass es Suchprogramme gibt, die dann eben nicht einfrieren, sondern dem Nutzer beispielsweise über eine Progressbar informieren, dass derzeit noch gesucht wird, das würde ich gerne koppeln wollen. Meine Frage ist daher, wie gestaltet man sowas?