我在C#中有一个三层应用程序。在业务层我有很多线程做同样的工作。 我想在UI上显示每个线程的进度,但我没有表示层的引用。
我该怎么做?最好的方法是什么?
谢谢。
答案 0 :(得分:6)
这里最恰当的答案可能是在您的业务层某处公开event
。您的UI代码可以订阅事件,并通过切换到UI线程(如果需要)来处理事件并自行更新。
然后业务代码不需要知道UI,并且可以在没有任何UI的情况下使用相同的(但与所有委托/回调一样,您需要检查{{1}在尝试调用委托之前。)
答案 1 :(得分:4)
最简单的方法是让UI将业务层委托给调用(或接口),以便它可以指示进度。
这也很容易测试,因为它将问题分开:在业务层测试中,您可以传入测试委托并确保调用它。在您的UI测试中,您可以伪造业务层,并假装有进展,调用适当的委托并检查UI是否正确更新。