Hi allseits,
ich suche nach einer „waidmännischen“ Methode, folgendes zu erreichen:
es existiert ein Programm, das wie üblich aus einem Hauptformular (Form1) besteht, auf dem sich diverse Controls befinden, und auf dem es einen „Start“ Button gibt, der dann etwas startet. Dementsprechend gibt es auch einen „Stop“ Button der das Teil wieder stoppt. Während es läuft, loopt das Programm unermüflich durch Daten und tut was mit ihnen, und schreibt dabei hin und wieder ein paar Log Einträge weg. Benutzereingaben sind nicht mehr erforderlich. Allerdings muss das Form1 ordentlich geladen werden, man hat der EInfachheit halber auch einige Konfigurationsdaten dort in Felder gespeichert, die das Programm benötigt.
Jetzt kommt irgendwer auf die Idee, das Programm als Systemdienst im Hintergrund laufen lassen zu wollen. Ab und zu jedenfalls, die Variante mit dem sichtbaren Fenster soll weiterhin funktionieren.
Wir beschließen nun, dem Programm einfach einen Parameter, sagen wir mal „/Auto“ mitzugeben, und dann soll das Programm sich praktisch seinen „Start“ Button selber drücken.
Da ich die Rückwirkungen auf Form1 bisher nicht abschätzen kann habe ich erst mal zur meiner Meinung nach ungefährlichsten Methode gegriffen: die FormLoad Routine zieht einen Timer auf, und nach einigen Sekunden feuere ich den selben Event ab, den der Start Button abfeuert … damit hoffe ich, dass das eigentlich für interaktiven Betrieb ausgelegte und getestete Programm vom „Hintergrundbetrieb“ nix merkt und es klappt auch. Aber elegant ist sowas natürlich nicht.
Elegant wäre, die onClick Methode des Start Buttons direkt aufzurufen. Allerdings erst, nachdem Form1 vollständig geladen wurde, damit alle Controls auf dem Form korrekt initialisiert werden.
Wo ist der waidmännische Einhängpunkt dafür?
Gruss Armin.