如何从业务层更新UI?

时间:2010-06-20 07:26:46

标签: c# multithreading user-interface business-logic

我在C#中有一个三层应用程序。在业务层我有很多线程做同样的工作。 我想在UI上显示每个线程的进度,但我没有表示层的引用。

我该怎么做?最好的方法是什么?

谢谢。

2 个答案:

答案 0 :(得分:6)

这里最恰当的答案可能是在您的业务层某处公开event。您的UI代码可以订阅事件,并通过切换到UI线程(如果需要)来处理事件并自行更新。

然后业务代码不需要知道UI,并且可以在没有任何UI的情况下使用相同的(但与所有委托/回调一样,您需要检查{{1}在尝试调用委托之前。)

答案 1 :(得分:4)

最简单的方法是让UI将业务层委托给调用(或接口),以便它可以指示进度。

这也很容易测试,因为它将问题分开:在业务层测试中,您可以传入测试委托并确保调用它。在您的UI测试中,您可以伪造业务层,并假装有进展,调用适当的委托并检查UI是否正确更新。