ผมใช้งานเพื่อให้ทำงานได้นานทำงานโทรเซิร์ฟเวอร์ใน 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()ภายในแลมด้าและการดำเนินการถูกเลื่อนไปยังเธรดอื่น การรับบริบทภายนอกแลมบ์ดาแก้ไขปัญหาได้