Saya menggunakan Tasks untuk menjalankan panggilan server yang berjalan lama di ViewModel saya dan hasilnya akan kembali Dispatcherdigunakan TaskScheduler.FromSyncronizationContext(). Sebagai contoh:
var context = TaskScheduler.FromCurrentSynchronizationContext();
this.Message = "Loading...";
Task task = Task.Factory.StartNew(() => { ... })
.ContinueWith(x => this.Message = "Completed"
, context);
Ini berfungsi dengan baik saat saya menjalankan aplikasi. Tetapi ketika saya menjalankan NUnitpengujian saya, Resharpersaya mendapatkan pesan kesalahan pada panggilan ke FromCurrentSynchronizationContextsebagai:
SynchronizationContext saat ini tidak dapat digunakan sebagai TaskScheduler.
Saya rasa ini karena tes dijalankan pada thread pekerja. Bagaimana cara memastikan pengujian dijalankan di utas utama? Saran lain dipersilahkan.
TaskScheduler.FromCurrentSynchronizationContext()di dalam lambda dan eksekusi ditangguhkan ke utas lain. mendapatkan konteks di luar lambda memperbaiki masalah.