Halöle,
ich habe hier eine relativ kleine Anwendung in der ich mal Tasks anstatt von Threads u. BackgroundWorker verwenden wollte..
private static void Main(string[] args)
{
Action updateAction = new Action(() =>
{
UpdateController updateController = new UpdateController();
updateController.UpdateOperation();
});
Task updateTask = new Task(updateAction, TaskCreationOptions.LongRunning);
Action<Task> finshedUpdateNotityAction = new Action<Task>(FinishedUpdateNotify);
updateTask.ContinueWith(finshedUpdateNotityAction);
updateTask.Start();
}
public static void FinishedUpdateNotify(Task task)
{
Console.WriteLine("\n\nUpdate abgeschlossen");
}
Das Programm sollte eigentlich starten..
Eine Action erzeugen, die eine Instanz von UpdateController erzeugt und dort die Methode "updateController.UpdateOperation()" startet.. Danach.. also wenn dieser Task beendet ist, sollte mit ContinueWith nur eine Meldung ausgegeben werden.
Jedoch wird keine Instanz erzeugt und das Programm beendet sich ohne Fehlermeldung 😦
Verstehe ich irgendwas falsch ?. . Was läuft da schief ?
Wenn ich nach dem "ContinueWith" - Ausdruck noch ein "updateTask.Wait()" mit dranhänge arbeitet das Programm wie erwartet.. merkwürdig
Hallo,
das ist nicht merkwürdig, das ist so wie es sein soll.
Dein Hauptthread (Der Main() ausführt) beendet sich sobald er aus Main() herausläuft. Wenn dieser beendet ist, beendet sich auch dein Programm und nimmt alle Tasks mit.
Mit Wait sagst Du der Main() Methode das sie auf die Ausführung des Tasks warten soll. Main() wird nicht vorzeitig beendet -> alles tutti
Gruß