Sto utilizzando Tasks per eseguire chiamate server con esecuzione prolungata nel mio ViewModel ei risultati sono stati sottoposti a marshalling su Dispatcher
utilizzando TaskScheduler.FromSyncronizationContext()
. Ad esempio:L'attuale SynchronizationContext non può essere utilizzato come TaskScheduler
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Questo funziona correttamente quando si esegue l'applicazione. Ma quando ho eseguito i miei NUnit
test su Resharper
ottengo il messaggio di errore sulla chiamata a FromCurrentSynchronizationContext
come:
Lo SynchronizationContext corrente non possono essere utilizzati come un TaskScheduler.
Suppongo che ciò avvenga perché i test vengono eseguiti sui thread di lavoro. Come posso garantire che i test vengano eseguiti sul thread principale? Qualsiasi altro suggerimento è benvenuto.
ha funzionato, grazie! – anivas
Per MSTest: inserire il codice sopra nel Metodo contrassegnato con ClassInitializeAttribute. – SACO
Buono a sapersi ... –