Estou usando o Tasks para executar chamadas de servidor de longa duração em meu ViewModel e os resultados são encaminhados de volta ao Dispatcheruso TaskScheduler.FromSyncronizationContext(). Por exemplo:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Isso funciona bem quando executo o aplicativo. Mas quando eu executo meus NUnittestes em Resharper, recebo a mensagem de erro na chamada para FromCurrentSynchronizationContextas:
O SynchronizationContext atual não pode ser usado como TaskScheduler.
Acho que isso ocorre porque os testes são executados em threads de trabalho. Como posso garantir que os testes sejam executados no thread principal? Quaisquer outras sugestões são bem-vindas.
TaskScheduler.FromCurrentSynchronizationContext()dentro de um lambda e a execução foi adiada para outro thread. obter o contexto fora de lambda corrigiu o problema.