2011-11-19 21 views
2

我知道這個問題有點主觀......但我基本上是看看是否有更好的方式來做到這一點比我想出來的。在WPF MVVM命令行爲中執行後臺任務的首選方法

我有一個基本的MVVM設置,樹視圖綁定到樹結構。

該結構具有按需加載的節點。

當我展開一個節點時,我觸發了一個命令行爲,在此行爲中,我查詢了必要的數據,並將其添加到該節點。

我的第一個直覺是使用一個後臺工作人員(在命令行爲事件中),我通過我擴展的節點的id。完成後,工作人員將找到該節點並追加它的子節點。

這是我從winforms開發繼承的方法。好奇的是,如果有更好的建築解決方案。

回答

6

我們目前使用Task Parallel Library (TPL)是因爲它更容易將數據傳遞給要執行的方法,並使您的代碼看起來更像是典型的同步方法,通常更容易閱讀和理解。它也讓你更接近於使用.NET 4.5的異步和等待編碼風格,這對於Windows 8編程非常重要。

+0

工作很好,謝謝。忘了所有關於TPL :) –

2

比爾的異步/等待模式的答案是好的。對於4.0,我更喜歡任務對象:

Task.Factory.StartNew(Action); 

雖然這取決於你在做什麼。有時我使用BackgroundWorker作爲進度支持。

+0

並且它在UI線程上完成。如果您使用任務,您如何獲得更新UI的結果? –

+1

Task.Factory.StartNew(Action).ContinueWith(UpdateAction); –

+0

只有在UI線程上執行更新操作時纔有效。 –