sev*_*ine 3 delphi c++builder tthread
My Environment: Rad Studio XE4 using C++
Run Code Online (Sandbox Code Playgroud)
我正在使用TThread开发一个软件.最近,我遇到了一个问题,即在程序启动几天后,TThread突然被破坏.
在TThread中,线程使用Synchronize()方法更改表单(例如TLable)的显示.我想知道这可能会引起一些问题.
我正在记录线程中的几个部分,以便我可以找到问题的原因.但是当我检查日志时,我只能发现突然调用了TThread的析构函数.
TThread的FreeOnTerminate设置为true.
该程序运行两个线程.只有一个线程突然被破坏,另一个线程即使在问题发生后仍在工作.
我正在寻找如何解决这类问题的原因.
当我查看日志时,我只能发现突然调用了TThread的析构函数.
可能发生的唯一方法是:
如果您将线程的FreeOnTerminate属性设置为true(您是)并且您的线程因其Execute()方法退出而终止(因为它遇到了一个return语句,到达了代码的末尾,或者引发了一个您没有捕获的异常).要记录线程是否正在终止,您可以覆盖其虚DoTerminate()方法,或为其分配OnTerminate事件处理程序.
如果线程外部的某些代码正在调用delete线程对象指针.要记录是否发生这种情况,您必须记录您的delete电话.
既然你都设置FreeOnTerminate为true,那么可能的罪魁祸首是Execute()由于未捕获到异常退出.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |