omnithreadlibrary相关内容

Delphi - 线程框架

我正在寻找在我的 Delphi 应用程序中使用的线程框架. 目前我正在评估 'OmniThreadLibrary' - 到目前为止它看起来不错并且可以满足我的所有需求需要. Delphi 还有其他“线程框架"吗? (我正在使用 D2006 和 D2009) 解决方案 根据Vegar Suggestion 根据我对 OmniThreadLibrary 的几个小时评估 ..
发布时间:2022-01-16 19:51:40 其他开发

使用IOmniTaskControl / TOmniWorker时等待调用完成

我已经使用TOmniWorker创建了IOmniTaskControl,以便可以在特定线程中定期运行代码块。因此,我将根据需要在此IOmniTaskControl上调用Invoke。这样做时,有时需要等待与该工作相关的执行。 我尝试在调用后在IOmniTaskControl上调用WaitFor(INFINITE),但挂起。我进行了调试,可以看到Invoke调用上的方法已完成。当与TOmniW ..
发布时间:2020-10-20 04:29:17 其他开发

对于实现线程化电子邮件发送队列的类,设计是什么样的?

因此,我的应用程序是出租车呼叫调度系统,其中操作员通过电话接收呼叫,并将接收到的呼叫分配给驾驶员.在输入呼叫详细信息的“呼叫详细信息"表单上,一旦单击“保存"按钮,该表单应关闭,应在后台线程中向出租车司机发送电子邮件,并显示主表单,在该表单中他可以选择下一个呼叫并将其分配给另一个驱动程序. 关于设计的难题是它应该是一个队列,这意味着队列中的电子邮件需要等待,直到对发送的电子邮件的处理完成为止 ..
发布时间:2020-05-14 01:42:54 其他开发

为什么使用OmniThreadLibrary Parallel.Pipeline的应用程序在关闭后仍继续在后台运行?

我正在使用OmniThreadLibrary实现用于发送电子邮件的后台管道(请参阅此SO 问题).我注意到关闭应用程序后,它会继续在后台运行(在Windows任务管理器中可以看到).这意味着我实现OTL管道的方式在我的代码中出了点问题.你能帮我找出问题吗? 代码如下: unit uEmailQueue; interface uses Classes, OtlCommon, OtlC ..
发布时间:2020-05-14 01:20:11 其他开发

Delphi 2010中其他线程的执行点

我正在使用Delphi 2010(使用出色的OmniThreadLibrary)开发多线程客户端应用程序,并且由于要不断地从一个线程切换到另一个线程,因此调试工作很困难. 我想知道是否有可能(使用任何工具或插件,我不在乎!)不仅为当前线程,而且为所有其他线程找到当前执行点. 一个简单的示例/报告: Thread #1 stopped at line #5 Thread #2 st ..
发布时间:2020-05-14 00:35:01 其他开发

使用Omni Thread Library在Delphi中异步获取函数结果

我试图从另一个单元/类中调用一个函数,这将花费一些时间来执行该任务并返回一个字符串值.我找不到很好的参考,类似于Delphi中的C#async-await之类的简单方法.对我来说,使用Omni Thread库似乎是个好主意. 一个简单的例子对我来说是一个很好的开始. 示例方法: procedure TForm1.button1Click(Sender: TObject); beg ..

如何在Delphi中使用Pipeline模式

我正在尝试在我的测试项目中实现Pipeline模式(如何进行Mutlithreded idhttp调用以在StringList上工作),但我正在努力将 TThread 代码改编为Pipeline模式代码。关于如何使用它的资源并不多。 我在下面尽力了,请不要downvote,我知道我的代码很乱但我会编辑我的问题如果需要。 输入 TForm2 = class(TForm) ... ..
发布时间:2018-07-09 15:46:17 其他开发

Delphi - OmniThreadLibrary Parallel.ForEach with Records

我正在运行Delphi XE2并试图熟悉OmniThreadLibrary,我安装了3.03b。 我一直在寻找Parallel.ForEach示例,并且不知道后台发生了什么事情(这可能很明显 - 后来很抱歉)。任何你可以提供帮助我更好地理解如何实现我的目标的信息将不胜感激。 假设我有一些记录只是一个容器的2个相关值, a和b。然后我想运行一个返回这些记录数组的并行循环。使用OmniTh ..

如何从第二个线程更新进度指标?

我有一个带有进度指标的主窗体。 在数据模型中,我有十个数据集,每个都有一个定义的OnBeforeOpen事件。 我想通过主窗体中的进度条显示开放数据集进度的百分比。 由于我完全是多线程编程的新手,有人可以给我一些建议吗? 非常感谢 解决方案 从线程发布到主线程的消息,并更新进度条,或使用TThread.Queue方法在主线程的上下文中执行一些代码。 unit U ..
发布时间:2017-04-25 00:32:42 Delphi

如何设计“输送机”的操作与OmniThreadLibrary?

我有一个Windows Delphi应用程序,通过通知图标可以访问“开始”和“停止”菜单项。点击“开始”后,我需要执行以下操作(正如我看到的实现): ThreadMonitor :第一个线程正在等待指定文件夹中的指定文件的出现。 ThreadParse :一次文件出现,它应该被转移到另一个线程(用于解析内容)并继续监视下一个文件。 ThreadDB :解析所有数据后,将其保存到M ..
发布时间:2017-04-23 23:31:25 Delphi

为什么OmniThreadLibrary的ForEach阻塞主线程?

使用OmniThreadLibrary和Delphi XE4,我希望运行多个在后台处理数据的线程,增加了我现有代码的速度。 当调用下面的过程中,应用程序GUI停止处理任何输入,直到所有线程完成。我的理解是,使用 .NoWait 应该允许程序退出,即使线程正在运行。 procedure Test(input:TStringList; output:TList) ..
发布时间:2017-04-23 22:14:14 Delphi

如何实现使用最少资源定期检查的线程?

我想在后台运行一个线程,它将以给定的时间间隔检查与某些服务器的连接。例如每5秒钟。 我不知道这是否有一个很好的“desing模式”?如果我记得正确的话,我已经读过某处,执行方法中的睡眠线程不好。但是我可能错了。 另外,我可以使用正常的TThread类或OTL线程库。 想法? 谢谢。 解决方案 使用 WaitForSingleObject TThread 后代的执行方 ..
发布时间:2017-04-23 20:39:40 Delphi

当.Net的限制为32768时,为什么OmniThreadLibrary限制为60个线程?

最近我正在比较.NET中的OmniThreadLibrary和ThreadPool,我发现Omni在最大线程( 60允许)中受到的限制更多,而.NET可以升级到 32768 在.NET 4.0中。 为什么这样的限制? 解决方案这是一个历史性的选择,曾经被取消。限制只有线程池实现。 有关网站,说明如下: 60个并发线程的限制仅适用于线程 池。线程池旨在快速执行许多小的 请 ..
发布时间:2017-04-23 16:38:00 Delphi

Delphi - 线程框架

我正在寻找一个在我的Delphi应用程序中使用的线程框架。 目前我正在评估“ OmniThreadLibrary ' - 到目前为止,它看起来不错,做了我所需要的一切。 有没有其他“线程框架”为Delphi? (我使用的是D2006& D2009) 解决方案 按照Vegar建议 根据我几个小时评估 OmniThreadLibrary 以下是我喜欢的一些事情 ..
发布时间:2017-04-23 14:43:15 Delphi