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