Sto usando Tasks per eseguire chiamate server a lunga esecuzione nel mio ViewModel e i risultati vengono reimpostati durante l' Dispatcher
utilizzo TaskScheduler.FromSyncronizationContext()
. Per esempio:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Funziona bene quando eseguo l'applicazione. Ma quando eseguo i miei NUnit
test Resharper
ottengo il messaggio di errore sulla chiamata a FromCurrentSynchronizationContext
come:
L'attuale SynchronizationContext non può essere utilizzato come TaskScheduler.
Immagino che ciò sia dovuto al fatto che i test vengono eseguiti sui thread di lavoro. Come posso assicurarmi che i test vengano eseguiti sul thread principale? Eventuali altri suggerimenti sono i benvenuti.
TaskScheduler.FromCurrentSynchronizationContext()
all'interno di un lambda e l'esecuzione è stata rimandata a un altro thread. ottenere il contesto esterno a lambda ha risolto il problema.