1 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
Dispatcher.CurrentDispatcher
很有趣;如果當(dāng)前線程還沒有調(diào)度器,它會(huì)為當(dāng)前線程創(chuàng)建一個(gè)調(diào)度器!這會(huì)導(dǎo)致單元測(cè)試出現(xiàn)問題,因?yàn)樾碌恼{(diào)度程序是為線程池線程創(chuàng)建的,該線程不是 STA 并且沒有消息泵。
理想的解決方案是不調(diào)用CurrentDispatcher
. 曾經(jīng)。使用await
orIProgress<T>
或(如果必須)SynchronizationContext
將結(jié)果/進(jìn)度/事件傳達(dá)給 UI 線程。這些抽象更容易為其創(chuàng)建測(cè)試環(huán)境。
但就目前而言,您可能可以使用WpfContext,這是 Async CTP 早期版本中包含的一種舊實(shí)用程序類型。WpfContext.Run
將接受一個(gè)委托,為當(dāng)前線程創(chuàng)建一個(gè)調(diào)度程序上下文,并在該調(diào)度程序上下文中執(zhí)行該委托,泵送其消息,直到異步操作完成。
- 1 回答
- 0 關(guān)注
- 101 瀏覽
添加回答
舉報(bào)