- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题。我有一个使用线程的 VCL 应用程序。该线程执行一些计算并通过 Synchronize() 调用 MainForm 的方法。一切都工作得很好,我有一个“开始”按钮,用于创建并运行线程,还有一个“停止”按钮,用于停止并释放线程。没有错误,什么也没有。
但是由于某种原因,当我关闭应用程序并且我已经运行了线程时,我收到了EOSError 1400 - 无效的窗口句柄
。我已经在 OnClose 过程中设置了断点,我唯一做的就是保存一个 ini 文件,没有错误,当我进一步跟踪(使用 F7)时,我到达了最后(Application.Run; end.
),在“调用”end之后。
我得到了错误,所以没有特定的代码行引发它。
我希望这个问题有点清楚,并且我希望它是可以解决的,因为仅仅忽略错误似乎有点不干净。
谢谢inb4
<小时/>回答
当调用线程的 Execute 方法时,我发生了这个错误,它看起来像这样:
procedure TRunThread.Execute;
var (...)
begin
while not Terminated do begin
(...)
MainForm.Memo1.Lines.Add('Some text'); // Even though this call worked fine during
//the application running, it caused errors on shutting the app down.
// For acccessing GUI elements, it's necessary to use Synchronize()
(...)
end;
end;
最佳答案
可能的原因是线程对 GUI 的访问不同步。您说线程不执行此操作,但没有看到看起来最好的猜测的 TRunThread.Execute
源代码。
关于multithreading - "EOSError 1400 - Invalid window handle"的可能原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6353903/
我有一个问题。我有一个使用线程的 VCL 应用程序。该线程执行一些计算并通过 Synchronize() 调用 MainForm 的方法。一切都工作得很好,我有一个“开始”按钮,用于创建并运行线程,还
我收到 EOSError 代码 5 - Access Denied 时 TServiceApplication 尝试向 服务经理。 我正在使用 XE2 Win7 64 位。 32 位和 64 位都会出
我的 Delphi 6 应用程序收到 EOSError 异常,代码 5,访问被拒绝,但仅当我切换到另一个 Windows 7 用户帐户或锁定工作站时。我正在打印堆栈跟踪,但错误似乎直接来自 Appli
我是一名优秀的程序员,十分优秀!