none
怎样从DAL线程中,传值到主窗体的控件中? RRS feed

  • 问题

  • 我的程序结构如下:

    project: Mainform 引用 project DAL;

    DAL中有多线程进行数据交换, 启动多线程是在DAL中. Thread.start();

    但是DAL多线程通讯中,得到的数值要显示到控件,也需要得到控件的设定值.

    请问怎么实现呢? 

    我本想在DAL中在引用MainForm, 在Mainform中做个控件的Invoke方法. 但是Visual Studio 显示不能循环引用项目.

    2012年9月21日 20:52

答案

全部回复

  • DAL中我建议你只存放一些静态方法,在界面上才使用BackGroundWorker等进程控件去调用这些方法并且和UI进行通讯。

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 focusdoit 2012年9月23日 2:27
    2012年9月22日 3:29
    版主
  • 这样也不错。

    是不是Windows应用程序,很少像WEB程序那样分层的? 我感觉Windows应用程序分层是比较麻烦。

    我的Windows应用程序是一个监测程序,要与硬件用USB,以太网通讯,读数据,发控制命令。

    我本想用DAL层,来处理与硬件相关的通讯。BLL层来做信号处理; UI层和用户交互。我现在的的做法是模仿WEB

    程序的三层架构,把DAL,BLL都做成class library project.

    但是因为要用多线程,发现这样处理起来很麻烦。想干脆把他们做到一个project里,分成3个文件夹,那就简单多了。

    您有什么建议吗? 非常感谢你的帮助

    2012年9月23日 2:33
  • 可以考虑使用委托,通过使用委托来交互通信,传递参数,执行一些操作。

    2012年9月24日 1:45
  • 谢谢,已经使用委托了。但是,DAL中,操作窗口的控件,必须要引用窗口类吧,但我的窗口类操作文件读写,要引用文件类(DAL project).

    VS报错,循环引用。

    2012年9月24日 2:21
  • 谢谢,已经使用委托了。但是,DAL中,操作窗口的控件,必须要引用窗口类吧,但我的窗口类操作文件读写,要引用文件类(DAL project).

    VS报错,循环引用。


    可以添加一个Control层,用来映射View层和DAL层的关系,通过Control层来沟通,View层和DAL层最好相互独立,这样就降低了耦合度。
    2012年9月24日 2:54