2010-10-12 25 views
2

我正在破解一些代碼,這些代碼至少在理論上是由我的前任在這家公司擔任Expression Blend中的MVVM項目的。如何從MVVM調用Winforms風格的調用/委託?

我已經有一個線程在後臺運行,它正在對項目執行一些操作。爲了防止任何衝突,我還得到了該線程運行我的用戶所要求的任何操作。

這些操作完成後,我想調出一個MessageBox來給出用戶啓動操作的摘要,但是現在他們正在自己的線程中運行,finishedProcessing事件處理程序現在正在運行在後臺線程而不是接口線程,它導致我的MessageBoxes出現非模態。

回到WinForms的日子裏,我已經處理了使用InvokeRequired,Invoke和Delegate。我已經讀過,這已被一個叫做「Dispatcher」的東西所取代,但我使用的ViewModel類似乎並沒有有一個Dispatcher對象。

的「thisViewModel」類我使用的繼承了一個名爲「WorkspaceViewModel」類,它繼承了「ViewModelBase」,這兩者的產生看我......

很抱歉,如果這一切是有點模糊,但我沒有寫代碼。總之,有沒有人知道我可以從這裏連接到這個「調度員」?

+0

實際的答案出現在註釋標記的答案。答案正文中的鏈接很有意思,但並不直接相關。 – Frosty840 2010-10-12 11:14:56

回答

0
+0

這似乎是一篇關於如何確保MessageBox調用不會鎖定一系列單元測試,將MessageBox封裝到容器中,然後在單元測試中使用單獨的容器的文章。據我所知,有趣但與分派器或調用代理無關...... – Frosty840 2010-10-12 09:10:07

+0

ViewModelBase應該有另一個構造函數,它需要Dispatcher,以便在創建視圖模型時可以與用戶控件的調度程序一起傳遞。 – whoisthis 2010-10-12 09:20:29

+0

那麼,使這個變化解決了這個問題,但它並沒有真正與你的鏈接有關......無論如何,我想。 – Frosty840 2010-10-12 09:58:25