系统由三部分组成:后台数据库+后台处理线程(多个)+前台控制界面
要求:
后台数据库存储了各个任务的状态,包括等待、正在运行、完成、被中断等;
后台处理线程查询数据库的数据,执行各个处于“等待”的任务,并且修改数据库的内容,例如任务启动后,它在数据库中的状态要改为“正在运行”,在界面上也要显示。
前台控制界面要实时显示各个任务的状态,并且可以对任务进行控制,例如,可以在界面上对一个任务进行中断,这样的话,后台处理线程会被中断,数据库中的状态会被改写,在界面上显示的状态也会改变。我本来想设计为以数据驱动的,即后台处理线程和前台控制界面都只跟数据库打交道,但是不知道该怎样搞最好。

解决方案 »

  1.   

    你说的 数据驱动的,即后台处理线程和前台控制界面都只跟数据库打交道..
    我也是赞同的..不过我突然想到了另外一个方案,
    后台(H)跟界面(J)直接通信,对数据库的操作由另一个组件(TT)专门负责.具体说,
    --------------------
    后台处理线程查询数据库的数据,执行各个处于“等待”的任务,并且修改数据库的内容,例如任务启动后,
    变为:
    TT查询数据库,启动后台线程,并通知界面......
      

  2.   

    谢谢您的回答~
    我本来是想简化一点,直接由数据库来驱动整个应用程序,后台处理线程和前台控制界面都只跟数据库打交道,但是不能很好解决两个问题:
    1 后台处理线程更新了数据库之后,怎样实时刷新控制界面?
    2 控制界面执行操作更新了数据库之后,怎样实时通知后台处理线程?我想到的解决方法是:
    对于1,不能采用定时更新线程,在后台处理线程更新了数据库之后,启动一个更新界面的线程,这个线程读取数据库内容并刷新界面;
    对于2,当控制界面想要操作后台线程时,在更新数据库之后,启动一个通知线程,去修改指定的后台线程的状态标志。这样子的话,也就是让后台线程和前面界面互相通信了,只不过各自又保持有对数据库的存取功能,Mybeautiful(天之痕)所讲的,就是对数据库的操作只由一个组件控制,不知道这两种方案是否都行?
      

  3.   

    其实你说的启动一个更新界面的线程,启动一个更新界面的线程...就是我说的控制组件应该去做的,它相当于一个中央控制器,或是起桥的作用,负责界面,后台,数据库的协调工作..无论界面,后台要做什么,只要给它一个指令就好了,由它再去处理.对于1,不能采用定时更新线程,在后台处理线程更新了数据库之后,启动一个更新界面的线程,这个线程读取数据库内容并刷新界面----似乎如果是BS的,并且不使用Axtivex之类的东西,好象不定时刷新不可能..
    持续关注更多的解决方案..
      

  4.   

    自己也UP一下,
    不考虑BS的先,就考虑一些典型的后台处理的控制系统,
    经常遇到这类系统的开发,希望可以总结出好的方案来,
    先感谢Mybeautiful(天之痕)的回答,也感谢 myhero811104(人生四大想不开:改嫁、出家、自杀、做软件开发) 的关注。