我在 WPF 中写一些东西,我需要在后台(在其他线程上)执行一些计算,这样它就不会影响 UI 的性能。
我有一个 Window 类,我在其中做一些 UI 逻辑,这就是我调用新Calculations()
实例的地方。在 Window 中,我还有一个List<CalculationFormulas>
(每个 CalculationFormula 都是需要运行的计算)。有时 CalculationFormula 也需要同时运行。当我构造如上所述的 Calculations 对象时,我将列表传递给 Calculations。
在 Calculations 构造函数中,我异步启动一个工作线程以启动列表中的第一个 CalculationFormula,然后在适当的点,该工作线程异步启动列表中的下一个 CalculationFormula,依此类推,直到列表为空(作为 CalculationFormula计算完成后从该列表中删除)。
我的问题:
1) 如何将当前正在运行的计算列表发送回 Window?即使它们都在不同的线程中运行,我是否有可能在计算中有一个属性,比如List<CalculationFormula>
我从每个线程更新的 RunningCalculations ......然后只Calculations.RunningCalculations
从 Window 调用?
2)如果List<CalculationFormula>
我传递给 Calculations 的 最初发生了变化,我如何将新列表传递给 Calculations 以便所有当前正在运行的线程都知道它已经改变。我需要以某种方式触发事件吗?
3) 每次计算完成时,如何确保 Window 知道这一点(以便它可以反映在 UI 中)?我将如何设置一个事件,以便每个线程在它关闭之前(即计算完成时)触发事件?
谢谢