Delphi - 线程不以 ActiveX 形式执行 - 但在其他地方执行

2024-01-08

我有一个线程,称为 TAlertThread。线程通过触发事件与其所有者进行交互。例如,当线程内某些数据可用时,它会设置一些临时变量并调用 Synchronize(UpdateAlert),后者又会触发相应的事件。

现在该线程可以在任何标准 Windows 应用程序中完美运行。我的问题是当我将该线程放入 ActiveX 表单 (TActiveForm) 中时。然后,ActiveX 控件(又名 COM 对象)嵌入到 Windows 桌面小工具中(通过 HTML / Javascript)。我也有这方面的经验,设备不是问题。 ActiveX 组件在其目标中工作正常,但线程从未执行。它的调用方式甚至与我从应用程序中调用它的方式完全相同。

这是 ActiveX 的一些限制,阻止线程执行吗?我不这么认为,因为其他需要内部线程的东西(例如 TADOConnection)才能工作。事实上,我正确地调用了 CoInitialize 和 CoUninitialize 。同样,在应用程序中工作得很好,但在 ActiveX 中根本不起作用。

这是我如何称呼这个线程......

procedure TRMPDashXS.ExecThread;
begin
  //Thread created suspended
  lblStatus.Caption:= 'Executing Thread...'; 
  fThread:= TAlertThread.Create(fConnStr); //fConnStr = connection string
  fThread.Priority:=      tpIdle;
  fThread.OnConnect:=     Self.ThreadConnected;
  fThread.OnDisconnect:=  Self.ThreadDisconnected;
  fThread.OnBegin:=       Self.ThreadStarted;
  fThread.OnFinish:=      Self.ThreadFinished;
  fThread.OnAlert:=       Self.ThreadAlert;
  fThread.OnAmount:=      Self.ThreadAmount;
  fThread.Resume; //Execute the thread
end;

我怀疑这可能准确地描述了您在 Delphi 版本中遇到的情况:

  • http://soft-haus.com/blog/2009/02/10/codegear-borland-activex-threading-synchronization-problems/ http://soft-haus.com/blog/2009/02/10/codegear-borland-activex-threading-synchronization-problems/

    其中引用了您引用的同一篇文章:

  • http://edn.embarcadero.com/article/32756 http://edn.embarcadero.com/article/32756

我不确定这是否有帮助……但我希望有帮助。至少有一点:)

附: 有什么特别的原因吗?have使用 Com/ActiveX 和/或 TActiveForm?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi - 线程不以 ActiveX 形式执行 - 但在其他地方执行 的相关文章

  • 通过套接字发送动态数组(在记录内)?

    我正在尝试直接使用 SendBuf 将记录从服务器传输到客户端 但是 该记录有一个动态数组的成员 并且我在某处 在 SOF 中 读到 发送记录时 成员必须是静态的 固定长度 但问题是 我无法确定如何我会 将来 发送许多论点 我怎么解决这个问
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty
  • 如何通过减少请求来改进 AJAX 实时搜索

    我正在构建一个 AJAX 实时搜索页面 到目前为止 一切都按预期运行 但我注意到我正在进行大量的 AJAX 调用 我知道发生这种情况的地点和原因 但我找不到阻止这些 AJAX 调用发生的方法 我将尝试给出快速解释 然后粘贴下面的代码 在页面
  • 线程睡眠和Windows服务

    我正在开发一个 Windows 服务 该服务存在一些问题Thread Sleep 所以我想我会尝试使用计时器 因为这个问题建议 在 Windows 服务中使用 Thread Sleep https stackoverflow com que
  • 如何在 Jquery/Javascript 中绑定模糊和更改,但只触发一次函数?

    我试图在选择元素更改时触发函数 由于 Ipad 在 on change 方面遇到问题 我还想绑定到 blur 这在 Ipad 上工作得很好 但是我不希望两个事件都触发该函数两次 所以我需要某种挂钩来确保两个事件是否都触发change and
  • 为什么 gcc 链接时没有 lpthread 标志?

    我当时正在做一个业余爱好项目 其中互斥体的行为很神秘 我将其归结为这个显然应该陷入僵局的测试用例 include
  • ThreadPool.SetMinThreads 不创建任何新线程

    我想弄清楚到底有什么影响ThreadPool SetMinThreads makes 根据官方文档 https learn microsoft com en us dotnet api system threading threadpool
  • 检测到设备正在振动?

    我使用下面的代码来振动设备 public void vibrator try Vibrator vibrator Vibrator getSystemService Context VIBRATOR SERVICE vibrator vib
  • 用于 C++ 数据复制的 Boost::Signals

    最近我有一堂课看起来像 class IGraphElement typedef void FuncCharPtr char int public void Add FuncCharPtr f FuncVec push back f void
  • 如何在表单上绘制半透明图像?

    我想在 Delphi 窗体上绘制半透明图像 但由于某种原因它不起作用 Here is the original PNG border is semi transparent 我将图像加载到TImage object Image1 Trans
  • 如何在不实现视图的情况下处理草书事件

    我正在编写一个应用程序cursive https docs rs cursive 0 16 3 cursive GUI 我想当用户按下某些键时执行某些操作 例如 当使用表格视图 https docs rs cursive table vie
  • jQuery:如果使用 html() 从 DOM 中删除事件处理程序,是否会从对象中删除事件处理程序

    我担心应用程序中的内存泄漏 因为我经常使用 jquery 的 html 方法来替换 DOM 中的内容 我只是想确保这些事件侦听器不会停留在浏览器内存中 我搜索了 jquery 文档没有明确的答案 有人知道吗 多谢你们 是的 他们是 如果你使
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题

随机推荐

  • Sailsjs。在 sails-mongo (mongodb) 上创建(和管理)索引的最佳方法

    我使用的是 sailsjs 0 12 它支持index属性上models 还 我正在使用 npm 包Sails hooks mongoat https www npmjs com package sails hook mongoat创建反向
  • 仅显示表中有限数量的行

    我试图限制显示的行数 table 我只需要显示所获取的任意数量的记录中的 2 行 表格末尾有一个小按钮 单击该按钮将显示其余记录 Here s a sample screenshot of how the table will look l
  • 在 GLSL 中选择立方体贴图的面

    好的 我试图了解如何使用提供的坐标选择立方体贴图的面textureCube 从规格中 我收集了定义面部的最大幅度的坐标 例如这些坐标 0 2 0 7 0 65 会选择立方体贴图的 Y 面 但是这些 0 2 0 3 0 8 将选择 Z 面 我
  • 目录 XSL

    Problem 我正在制作一个目录 其中包含章节 小节 小节和小节 我想要的是使用 xsl 处理信息 即 XML 格式 将其转换为 HTML 页面 XML
  • Nuxt.js 中的无限动态级别嵌套

    我希望 nuxt js 的路由完全动态 因为我无法预测用户及其对他想要的级别数量的偏好 因此 一个用户会创建一个如下所示的页面 http localhost parent level 1 level 2 http localhost par
  • javascript:console.log 在这种情况下不起作用?

    function fn openlayers function mapElementId options alert console log console log options 我试图扩展 javascript 库中的功能 但令我惊讶的
  • 不知道从哪里开始使用可变向量

    我正在尝试使用 Data Vector 包在 Haskell 中做类似的事情 但我真的不知道从哪里开始 我是 Haskell 的新手 对某些核心概念的掌握很薄弱 但我正在做到这一点 我想要做的事情可以用以下 C 代码大致表达 float a
  • 单个控制器/操作的 MVC 身份验证绕过

    我正在使用带有表单身份验证的 MVC 并且我需要对我的控制器之一进行身份验证绕过 是否可以绕过控制器 操作的身份验证 我已经经历过ASP NET MVC Forms 身份验证和未经身份验证的控制器操作 https stackoverflow
  • Agora 云录音无法启动

    我正在关注Agora 云录音 RESTful api https docs agora io en cloud recording cloud recording api rest platform All 20Platforms 问题是
  • Python - 如何使用复杂的目录结构使用 PYTHONPATH?

    考虑以下文件 目录结构 project django project init py django app1 init py utils init py bar1 py django app2 init py bar2 py scripts
  • 如何编写 .htaccess 文件以使 CodeIgniter URL 路由工作?

    我正在使用 CodeIgniter 运行 LAMP 环境 我希望能够使用它的 URL 模式 例如 http localhost controller function ID 但默认情况下它必须是http localhost index ph
  • gitlab runners 工件:zip 中没有父文件夹的子文件夹和文件

    我有一个名为 public 的文件夹 其中包含子文件夹 带有子文件夹和文件等 和文件 例如 public folder1 file1 txt folder2 p file1 txt p file2 txt 这些文件夹和文件应作为 gitla
  • HttpAuthorizer 中的 Android Pusher 请求正文实现

    我是推手新手 我已经在我的应用程序中成功实现了公共频道订阅 我目前停留在 Android 私人频道订阅上 我们应该在服务器的 post 端点中传递请求正文参数 在我的 iOS 应用程序中 我们正在创建自定义授权程序以在 PusherOpti
  • 我应该静态还是动态链接到 Visual Studio C 运行时?

    我读过双方关于在 Visual Studio 项目中应该静态还是动态链接到 C 运行时库的争论 但我仍然不完全确定该怎么想 我的项目引入了一些第三方库 Python HDF5 Trilinos 和 Microsoft MPI 每个库都必须使
  • 调用 free 后内存使用量不会减少

    我有一个使用 C 语言的 WebSocket 服务器 它将作为 Windows 上的后台进程运行 并且此进程将接受包含大图像数据 base64 格式 的请求 每次收到请求时 都会使用 malloc 分配内存 并在请求执行后释放 但当我检查任
  • 将ARFrame捕获的图像转换为UIImage方向问题

    我想检测球并让 AR 模型与其交互 我使用 opencv 进行球检测并发送球中心 我可以在其中使用hitTest获取坐标sceneView 我一直在转换CVPixelBuffer to UIImage使用以下函数 static func c
  • 如何导航到 IntelliJ 中的类型?或者相当于 Eclipse 的 Ctrl + Shift + T 的是什么?

    In Eclipse the Open Type dialog Ctrl Shift T allows you to open any type including those that are in jar dependencies Wh
  • STintersects() 查找交点

    我有两个sql服务器geometry ies 我用来检查它们是否相交 如果他们这样做我需要交叉点 目前我只能得到布尔输出 如果它intersects 1如果它不相交 就会给出 0 有什么方法可以找到两个形状的交集geometry Updat
  • 如何更改 Play Framework 中的模板引擎?

    我如何更改 Play 中的模板引擎 使用与默认引擎不同的引擎 你能给个例子吗 我什至不问你为什么要这样做 很简单 Play即可返回Result您将提供任何内容 因此您可以轻松使用 return ok h1 Code rendered fro
  • Delphi - 线程不以 ActiveX 形式执行 - 但在其他地方执行

    我有一个线程 称为 TAlertThread 线程通过触发事件与其所有者进行交互 例如 当线程内某些数据可用时 它会设置一些临时变量并调用 Synchronize UpdateAlert 后者又会触发相应的事件 现在该线程可以在任何标准 W