这两天遇到的一个需求。项目本身是三层架构。需求是在从数据库读取超过50条数据的时候,新开一个线程在后台读取数据,然后添加到DataGridView控件进行显示。这个应该怎么设计才能更好的符合三层架构,并且可以方便的进行重用呢?多线程架构

解决方案 »

  1.   

    呃。。我想问得是该如何设计比较方便重用,,因为各个读取数据的地方SQL语句都不一样。
    目前我做出来的是各个读取的地方自己将读取完整数据的SQL拼出来,然后共通功能负责分段查找。但是必须得在共通功能里面去添加各自页面单独的参数初始化,感觉作为一个共通来说封装的不够。所以想问问应该如何设计这块功能呢
      

  2.   

    哎,博客园害人啊,什么什么就不能复用了
    我问你DataGridView一个通用控件,如何就不能复用了?
    线程读数据又如何不能复用了,难道读数据这活,线程这活除了你别人都不能用?
    数据库读取超过50条数据,和这个又怎么不能复用了?从A库读50条,和从B库读100条,难道不是一个代码?哎,我不知道现在的程序员都在博客园上看了些啥子,昨天一帖子,什么都木有就喊内存泄露。你这一帖子啥都木开始设计就喊复用
      

  3.   

    晕我意思是说,,做一个共通功能,专门负责开辟新线程来读取后续数据,,跟别的线程没关系啊因为需要读取数据的地方比较多并且SQL都各不相同,,但是共同的地方都是需要开辟新线程来分次读取数据,,就是想知道该怎么去设计才能将这个功能封装的更好,,能让读取数据的地方更方便的调用。就因为不太明白设计,,才会去往这方面去学习啊。不然我每个地方复制一份不就完事了。
      

  4.   

    1.别管人家怎么取数据,这个你管不到滴,你设计一个类写个virtual方法,让后面的自己overide就ok(或者你委托出去,让调用的人自己去决定也可以)
    2.别管人家怎么绑定datagridview滴,这不管你的事情,UI数据千奇百怪,你就想管也管不来,限制一堆事情,到头来人家说你少提供一个字段,你又抓脑袋了这个东西这样一说你就基本明白了,其实这就是那帮人号称的MVVM,当然如果你找mvvm的资料大部分是wpf滴,但实际上mvvm在winform里一样可以用自己去看  ObservableCollection<T> 写成公用类开线程获取数据,返回ObservableCollection<T>问题不大,然后线程里触发properyChanged问题也不大,线程里同步上下文信息问题也不大
    一个例子可以看我去年回复的一个帖子
    http://bbs.csdn.net/topics/390062975
    这里的test稍微提取一下就可以写成一个公用类其实看这个例子,你就明白了。啥叫复用,复用的基本思想是别管那些你管不了地,人家用啥子绑定和你木关系,你只要提供数据,提供消息通知对方我数据更新了你自己更新ui去,然后别管人家下面怎么取数据滴,这个你管不了,谁知道你要什么东西,所以virtual也好,委托也罢,让他们自己搞。谁的活谁来,我TM怎么知道你要从哪个库取哪个表