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 Dispatcher
uso 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 NUnit
testes em Resharper
, recebo a mensagem de erro na chamada para FromCurrentSynchronizationContext
as:
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.