1.线程是一个什么概念?是一个独立的执行文件还是程序里面的一个单元文件?是不是只要我打开了这个线程他就会自己做自己的事不用管?
2.如何在主程序中打开/关闭一个线程?
3.具体的问题:我有一个SMS收发/管理的主程序,因为怕信息收发的时候主程序没有响应,想收/发各做一个线程,收的部分坐在一个DLL里,只要有数据到达就调用一下.发,现在还是不知道怎么作?主要是每秒钟扫描一下一张表,把符合条件的记录发出去.
该如何操作?
4.有没有这方面的例子:
  建立线程.  
  线程中定时操作数据库.
  打开/关闭线程.采鸟问题,不要见笑,分不够再加!

解决方案 »

  1.   

    1.线程是程序里面的一个单元文件。是不是只要我打开了这个线程他就会自己做自己的事不用管?是的
    2.如何在主程序中打开/关闭一个线程?CREATE EXECUTE 
    3.可以实现。
    4.在DELPHI有这样的例子。
      

  2.   

    别的就不多说了,上面的兄弟们都说过了,关于第三个问题,给点建议:
    你完全不用在线程里加定时器,你可以这样做,用timer控件,每一秒钟扫描一次表,找到符合条件的记录,则启动线程,开始发送,否则,继续扫描,这样不久不存在线程里面加定时器的问题了吗,我没时间,不然可以做一个例子给你,你自己先这样作吧,如果有问题,我再帮你看看。
    我前面做得一个系统里有这样一段,和你的类似:我用的三层结构里不能查询中文,所以我用socket把查询条件发给服务器,让服务器查询,然后返回数据。我是这样做得:查询--启动线程--用timer控制socket连接(因为怕socket正在使用)--连接成功--发送--服务器查询--返回完成结果。所以你的应该可以。
      

  3.   

    我现在是这样做的:在线程里做一个无限循环,在循环里不断的扫描,符合条件的就发.不过这样的话cpu占用率一直是100%,后来加了一句sleep(500)就没事了.循环没出口,也不知道这样做有什么不良后果,因为线程要一天24小时开着的.
      

  4.   

    嘿嘿,应该没有不良后果。不过我还是觉得小鱼的方法可行,加个timer,符合条件就激活,否则就一直悬挂。另外: diibbface(bbface)是否考虑将线程的优先级降一级?
      

  5.   

    1.线程只是delphi封装的一个类,而不代表一个单元文件
    2.创建一个线程类的实例就创建了一条线程
    3.你可以把线程做成一个循环(并且是死循环)一直发送信息。但是这样会占用大量的CPU时间
    4.Delphi的Demo文件夹中有线程的例子