1

我正在构建一个提供应用程序自动化服务的 Windows 窗体系统(如果对任何人都重要,则使用 C#)。由于此应用程序面向不精通计算机的用户,因此我决定使用向导 UI 为用户简化操作。我想避免将视图和视图引擎(将从其构建向导)耦合到自动化引擎。

我遇到的问题是自动化引擎在执行其操作时在单独的线程上运行,需要将状态信息报告给用户,并监听来自用户的取消或暂停事件。由于我不希望视图引擎或自动化引擎相互依赖,因此我很难弄清楚如何提供此信息管道。

我对这个问题的任何见解将不胜感激。在这一点上,我已经绞尽脑汁好几个星期了,我真的不想放弃,只是把所有东西结合在一起。

如果有人需要更多详细信息来帮助提出某种想法,请告诉我,我很乐意提供。

4

1 回答 1

1

为什么不在中间有一个线程安全对象作为两者之间的通信平台?此类将具有自己的事件以及提供输入和提取所需信息的方法的属性和方法。你甚至可以更进一步,如果你有多个向导和自动化平台同时运行,如果它们是唯一可识别的,我会设置向导 id 到平台 id 的哈希值,你的对象可以处理多个对的通信时间。这需要非常小心,一切都是线程安全的,并且您正在执行的通信仅使用与该向导-平台对相关的信息。

我知道这是一个广泛的答案,但我会先研究这种方法。它为您提供了所需的关注点分离,还为您提供了一个可以像您设计的那样多功能的交流平台。

最后,一个你可能不需要的建议。你不应该让通信类依赖于任何可能导致你遇到循环引用问题的东西。我会让这个类尽可能地不可知,它需要的任何对象都应该与向导/平台需要的对象分开,除非这些对象本质上是相当通用的,这样你才能真正分离关注点。

希望这可以帮助。

于 2010-05-10T16:50:50.423 回答