在如何设计应用程序时,我遇到了一些问题。
在一条生产线上有多个车站。产品将从一个车站转移到另一个车站。每个站将对产品执行一些任务。任务应该并行执行,所以所有有产品的站点都应该同时执行它的任务。
也就是说,Product1将进入Station1并执行Task1。然后生产线是前进一个站。产品2进入Station1,Product1进入station2并执行相应的任务。每个产品将从最后/出口站的生产线上移除。新产品将“永远”面世。
这感觉就像它已经解决了,也许有一些设计模式,可以帮助我实现这一点?
目前有5个车站,但可能会更晚。
(该程序将是使用WPF的桌面应用程序)
发布于 2017-09-05 11:44:14
发布于 2017-09-05 14:06:55
如果我的理解是正确的,您基本上需要实现这样的程序:
发布于 2021-08-16 09:46:45
由于您正在描述物理生产线的控制/监视,所以可能不需要使用并发编程技术。计算机比任何物理机器都快得多,所以即使是一个线程也应该足够快地更新所有站点的状态。如果有任何计算繁重的工作要做,它可以被移动到一个工作线程。
我建议将生产线建模为一个系列状态机,可能会监视硬件传感器以触发状态变化,并向物理机器发送信号以执行某些操作。每个站都可以有一组标准化的状态,比如“准备接受下一项”或“失败”,这样就可以连接不同的站点。
如果这是由硬件传感器驱动的,那么您只需有一个事件的公共队列,并有一个循环来检查每个事件是否与状态变化相关联,如果是,则触发状态更改。有点类似于UI系统的消息泵。
可以使用c#异步/等待作为编写这样的状态机的帮助,但这是不必要的。您可能还需要一些逻辑来检查站的组合是否有意义,例如,产生方格的站不应该连接到期望圆圈的站。
https://softwareengineering.stackexchange.com/questions/356829
复制相似问题