Tasksを使用してViewModelで長時間実行されているサーバー呼び出しを実行していますが、結果はをDispatcher
使用してマーシャリングされTaskScheduler.FromSyncronizationContext()
ます。例えば:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
アプリケーションを実行すると、これは正常に機能します。しかし、NUnit
テストを実行すると、次Resharper
のように呼び出すとエラーメッセージが表示されますFromCurrentSynchronizationContext
。
現在のSynchronizationContextはTaskSchedulerとして使用できません。
これは、テストがワーカースレッドで実行されるためだと思います。テストがメインスレッドで実行されるようにするにはどうすればよいですか?その他の提案は大歓迎です。
TaskScheduler.FromCurrentSynchronizationContext()
、ラムダ内で使用していて、実行は別のスレッドに延期されました。ラムダの外でコンテキストを取得すると、問題が修正されました。