2013-01-13 83 views
0

我在WPF中寫了一些東西,我需要在後臺(在其他線程上)執行一些計算,所以它不會影響UI的性能。在後臺執行計算(線程)

我有一個Window類,我正在做一些UI邏輯,這就是我稱之爲新的Calculations()實例的地方。在Window中,我還得到了一個List<CalculationFormulas>(每個CalculationFormula是需要運行的計算)。有時CalculationFormula's也需要同時運行。如上所述,我在構建計算對象時將該列表傳遞給計算。

在Calculations構造函數中,我異步啓動工作線程以啓動列表中的第一個CalculationFormula,然後在工作線程異步啓動列表中的下一個CalculationFormula的適當位置,依此類推,直到列表爲空(因爲計算完成時CalculationFormula從此列表中移除)。

我的問題:

1)如何發送當前正在運行的計算清單回窗口?即使它們都運行在不同的線程中,是否有可能在計算中有一個屬性,例如List<CalculationFormula> RunningCalculations,我從每個線程更新...然後從Window調用Calculations.RunningCalculations? 2)如果我傳遞給Calculations的List<CalculationFormula>最初發生更改,那麼如何將新列表傳遞給Calculations,以便所有當前運行的線程都知道它已更改。我需要以某種方式觸發事件嗎? 3)每次計算完成後,我怎樣才能確保Window知道這個(所以它可以反映在UI中)?我將如何設置一個事件,以便每個線程在關閉之前觸發事件(即計算完成時)?

謝謝

+0

謹慎分享您在atm工作的代碼? –

回答

0

這正是那種東西BackgroundWorker擅長。你開始BackgroundWorker並讓它在工作完成時通知你。文檔有一些體面的例子,許多其他網站也是如此。只需搜索BackgroundWorker,就可以找到豐富的信息。

相關問題