2013-01-13 65 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,就可以找到丰富的信息。

相关问题