Sto lavorando a un'app WPF e voglio semplicemente modificare il cursore prima e dopo l'esecuzione dell'attività. Ho questo codice:Task ContinueWith() non aggiorna il cursore sul thread UI
this.Cursor = Cursors.Wait;
Task.Factory.StartNew(() => PerformMigration(legacyTrackerIds)).ContinueWith(_ => this.Cursor = Cursors.Arrow);
Il cursore si trasforma in realtà per il cursore di attesa, ma non torna alla freccia quando il compito è fatto. Se metto un breakpoint nel metodo ContinueWith(), viene colpito. Ma il cursore non cambia in una freccia. Perché?
Questo era il vecchio modo in cui lo stavo provando. Il cursore è tornato a una freccia, ma non voglio Wait() per l'attività.
this.Cursor = Cursors.Wait;
Task.Factory.StartNew(() => PerformMigration(legacyTrackerIds)).Wait();
this.Cursor = Cursors.Arrow;
Non dovrei ricevere un'eccezione? –
@BobHorn Probabilmente lo sei, ma dal momento che si trova in un thread in background, si sta solo riducendo quel thread, non l'intera applicazione. – Servy
Quando provo il primo suggerimento, ottengo un errore in fase di compilazione: 'Impossibile convertire espressione lambda in tipo 'System.Delegate' perché non è un tipo delegato'. –