我做了一个和串口通信的程序,一个串口通过多串口卡连接八条通信总线,每条总线并联30块电表,系统启动时,我打开串口,然后开了八个线程,但是,在系统运行过程中,有一个线程死掉了,此时,无法终止线程.
我有三个问题:
1 终止线程中我用了terminate方法或设置FreeOnTerminated=true并将线程对象置为nil,但无法终止该线程.那么,该用什么方法终止线程呢?
2 也可能根本没有进入我的终止线程的函数,那么我如何在别的地方终止该线程呢?
3 如何避免线程死循环?

解决方案 »

  1.   

    1。如果使用了terminate方法,县城肯定会结束的,除非你在线程execute中有死循环,可以在该循环内用if Terminated then exit;来判断是否需要退出。2。这个你连县城是否进入了都不知道我有点胸闷3。把程序写对,逻辑错误的程序才会死循环。。循环中做更多的处理,判断是否该退出线程了,如1中所述。
      

  2.   

    第一、我不明白你的线程是怎么定义的。到底是什么线程。是进程里面的线程?还是访问网络的线程?请你说清楚。第二、如果解决进程因为占用资源而造成没有响应,那就给可能出现卡死的地方加线程管理会有效果的。这个是windows编程都该有的常识。第三、你说的还是不明确,你也不贴代码,我们无法帮你。
      

  3.   

    看看我的方法行吗?http://218.56.11.178:8020/web/technology/thread.htm
      

  4.   

    to reallike(认真学习Cpp用Cpp考虑delphi) :
    1 通过线程类定义线程。是进程中的线程,不过这些线程需访问串口;2 我不太懂线程如何管理,通过进程管理?还是在开一个线程管理?又如何管理?
    在那个线程死掉后,鼠标右键仍可弹出菜单,但菜单单击事件没有响应。3 代码是别人写的,我负责维护一下,代码比较多,稍后我整理一下,发出来。
      

  5.   

    if Terminated then exit;