和串口通信时,开了几个线程,运行中有一个线程死掉了,如何强行终止该线程?在哪里终止?

jordi2014 2003-08-31 11:00:42
我做了一个和串口通信的程序,一个串口通过多串口卡连接八条通信总线,每条总线并联30块电表,系统启动时,我打开串口,然后开了八个线程,但是,在系统运行过程中,有一个线程死掉了,此时,无法终止线程.
我有三个问题:
1 终止线程中我用了terminate方法或设置FreeOnTerminated=true并将线程对象置为nil,但无法终止该线程.那么,该用什么方法终止线程呢?
2 也可能根本没有进入我的终止线程的函数,那么我如何在别的地方终止该线程呢?
3 如何避免线程死循环?
...全文
78 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
eliphe 2003-09-02
  • 打赏
  • 举报
回复
if Terminated then exit;
jordi2014 2003-09-02
  • 打赏
  • 举报
回复
to reallike(认真学习Cpp用Cpp考虑delphi) :
1 通过线程类定义线程。是进程中的线程,不过这些线程需访问串口;

2 我不太懂线程如何管理,通过进程管理?还是在开一个线程管理?又如何管理?
在那个线程死掉后,鼠标右键仍可弹出菜单,但菜单单击事件没有响应。

3 代码是别人写的,我负责维护一下,代码比较多,稍后我整理一下,发出来。
jpyc 2003-09-02
  • 打赏
  • 举报
回复
看看我的方法行吗?

http://218.56.11.178:8020/web/technology/thread.htm
reallike 2003-09-02
  • 打赏
  • 举报
回复
第一、我不明白你的线程是怎么定义的。到底是什么线程。是进程里面的线程?还是访问网络的线程?请你说清楚。

第二、如果解决进程因为占用资源而造成没有响应,那就给可能出现卡死的地方加线程管理会有效果的。这个是windows编程都该有的常识。

第三、你说的还是不明确,你也不贴代码,我们无法帮你。
viaboy 2003-09-02
  • 打赏
  • 举报
回复
study
jordi2014 2003-08-31
  • 打赏
  • 举报
回复
但是在上边那种情况下用掌上电脑给总线上的任何一块电表发通信命令,然后线程就恢复正常,否则总线上无任何信号.
tonylk 2003-08-31
  • 打赏
  • 举报
回复
1。如果使用了terminate方法,县城肯定会结束的,除非你在线程execute中有死循环,可以在该循环内用if Terminated then exit;来判断是否需要退出。

2。这个。。。你连县城是否进入了都不知道。。。我有点胸闷。。。

3。把程序写对,逻辑错误的程序才会死循环。。循环中做更多的处理,判断是否该退出线程了,如1中所述。

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧