Pracuję nad aplikacją WPF i po prostu chcę zmienić kursor przed i po uruchomieniu zadania. Mam ten kod:Zadanie ContinueWith() Nie aktualizowanie kursora przy użyciu wątku interfejsu użytkownika
this.Cursor = Cursors.Wait;
Task.Factory.StartNew(() => PerformMigration(legacyTrackerIds)).ContinueWith(_ => this.Cursor = Cursors.Arrow);
Kursor rzeczywiście zmienia się na kursor oczekiwania, ale nie zmienia się z powrotem do strzałki po wykonaniu zadania. Jeśli wstawię punkt przerwania w metodzie ContinueWith(), zostanie on trafiony. Ale kursor nie zmienia się z powrotem w strzałkę. Czemu?
To był stary sposób, w jaki próbowałem. Kursor zmienił się z powrotem na strzałkę, ale nie chcę czekać() dla zadania.
this.Cursor = Cursors.Wait;
Task.Factory.StartNew(() => PerformMigration(legacyTrackerIds)).Wait();
this.Cursor = Cursors.Arrow;
Czy nie powinienem otrzymać wyjątku? –
@BobHorn Jesteś bardzo prawdopodobne, ale ponieważ jest w wątku tła, to tylko wątku, a nie całej aplikacji. – Servy
Kiedy próbuję pierwszej sugestii, pojawia się błąd podczas kompilacji: 'Nie można przekonwertować wyrażenia lambda na typ 'System.Delegate', ponieważ nie jest to typ delegata'. –