omnithreadlibrary相关内容
我正在寻找在我的 Delphi 应用程序中使用的线程框架. 目前我正在评估 'OmniThreadLibrary' - 到目前为止它看起来不错并且可以满足我的所有需求需要. Delphi 还有其他“线程框架"吗? (我正在使用 D2006 和 D2009) 解决方案 根据Vegar Suggestion 根据我对 OmniThreadLibrary 的几个小时评估
..
我已经使用TOmniWorker创建了IOmniTaskControl,以便可以在特定线程中定期运行代码块。因此,我将根据需要在此IOmniTaskControl上调用Invoke。这样做时,有时需要等待与该工作相关的执行。 我尝试在调用后在IOmniTaskControl上调用WaitFor(INFINITE),但挂起。我进行了调试,可以看到Invoke调用上的方法已完成。当与TOmniW
..
在使用OmniThread库的程序中,如何在SetParameter中传递TRect?示例: procedure TestParameters(const ATask: IOmniTask); begin // how can I access the TRect here? end; FTestTask := CreateTask(TestParameters, 'TestParam
..
因此,我的应用程序是出租车呼叫调度系统,其中操作员通过电话接收呼叫,并将接收到的呼叫分配给驾驶员.在输入呼叫详细信息的“呼叫详细信息"表单上,一旦单击“保存"按钮,该表单应关闭,应在后台线程中向出租车司机发送电子邮件,并显示主表单,在该表单中他可以选择下一个呼叫并将其分配给另一个驱动程序. 关于设计的难题是它应该是一个队列,这意味着队列中的电子邮件需要等待,直到对发送的电子邮件的处理完成为止
..
我正在使用OmniThreadLibrary实现用于发送电子邮件的后台管道(请参阅此SO 问题).我注意到关闭应用程序后,它会继续在后台运行(在Windows任务管理器中可以看到).这意味着我实现OTL管道的方式在我的代码中出了点问题.你能帮我找出问题吗? 代码如下: unit uEmailQueue; interface uses Classes, OtlCommon, OtlC
..
我正在使用Delphi 2010(使用出色的OmniThreadLibrary)开发多线程客户端应用程序,并且由于要不断地从一个线程切换到另一个线程,因此调试工作很困难. 我想知道是否有可能(使用任何工具或插件,我不在乎!)不仅为当前线程,而且为所有其他线程找到当前执行点. 一个简单的示例/报告: Thread #1 stopped at line #5 Thread #2 st
..
我遇到了一个简单的TTimer问题,该问题已启动并在主应用程序线程中执行了其OnTimer事件,代码如下: procedure TForm1.DoSomeStuff(); begin OmniLock.Acquire; try Parallel.Pipeline.NumTasks(MaxThreads).Stage(StageProc).Run;
..
我试图从另一个单元/类中调用一个函数,这将花费一些时间来执行该任务并返回一个字符串值.我找不到很好的参考,类似于Delphi中的C#async-await之类的简单方法.对我来说,使用Omni Thread库似乎是个好主意. 一个简单的例子对我来说是一个很好的开始. 示例方法: procedure TForm1.button1Click(Sender: TObject); beg
..
如何正确停止Pipleline任务,我已经尝试但是当我按下Abort按钮我得到一个AV,我不太擅长调试,我已达到 DoOnStop(任务); 在OtlParallel然后我无法弄清楚下一步该做什么,我相信有些东西丢失了? type procedure SetInProcess(const Value:Boolean); private FInProcess:Boolean;
..
我正在尝试在我的测试项目中实现Pipeline模式(如何进行Mutlithreded idhttp调用以在StringList上工作),但我正在努力将 TThread 代码改编为Pipeline模式代码。关于如何使用它的资源并不多。 我在下面尽力了,请不要downvote,我知道我的代码很乱但我会编辑我的问题如果需要。 输入 TForm2 = class(TForm) ...
..
我正在运行Delphi XE2并试图熟悉OmniThreadLibrary,我安装了3.03b。 我一直在寻找Parallel.ForEach示例,并且不知道后台发生了什么事情(这可能很明显 - 后来很抱歉)。任何你可以提供帮助我更好地理解如何实现我的目标的信息将不胜感激。 假设我有一些记录只是一个容器的2个相关值, a和b。然后我想运行一个返回这些记录数组的并行循环。使用OmniTh
..
我有一个带有进度指标的主窗体。 在数据模型中,我有十个数据集,每个都有一个定义的OnBeforeOpen事件。 我想通过主窗体中的进度条显示开放数据集进度的百分比。 由于我完全是多线程编程的新手,有人可以给我一些建议吗? 非常感谢 解决方案 从线程发布到主线程的消息,并更新进度条,或使用TThread.Queue方法在主线程的上下文中执行一些代码。 unit U
..
可以以某种方式监控管道任务吗?我试图添加显示器到每个任务像这样 FPipeline:= Parallel.Pipeline() .Stage(StageWorker1 ,Parallel.TaskConfig.MonitorWith(MyMonitor)) .NumTasks(MaxReadThreadCount) .Stage(StageWorker2,Parallel.TaskC
..
我有一个Windows Delphi应用程序,通过通知图标可以访问“开始”和“停止”菜单项。点击“开始”后,我需要执行以下操作(正如我看到的实现): ThreadMonitor :第一个线程正在等待指定文件夹中的指定文件的出现。 ThreadParse :一次文件出现,它应该被转移到另一个线程(用于解析内容)并继续监视下一个文件。 ThreadDB :解析所有数据后,将其保存到M
..
使用OmniThreadLibrary和Delphi XE4,我希望运行多个在后台处理数据的线程,增加了我现有代码的速度。 当调用下面的过程中,应用程序GUI停止处理任何输入,直到所有线程完成。我的理解是,使用 .NoWait 应该允许程序退出,即使线程正在运行。 procedure Test(input:TStringList; output:TList)
..
我想在后台运行一个线程,它将以给定的时间间隔检查与某些服务器的连接。例如每5秒钟。 我不知道这是否有一个很好的“desing模式”?如果我记得正确的话,我已经读过某处,执行方法中的睡眠线程不好。但是我可能错了。 另外,我可以使用正常的TThread类或OTL线程库。 想法? 谢谢。 解决方案 使用 WaitForSingleObject TThread 后代的执行方
..
最近我正在比较.NET中的OmniThreadLibrary和ThreadPool,我发现Omni在最大线程( 60允许)中受到的限制更多,而.NET可以升级到 32768 在.NET 4.0中。 为什么这样的限制? 解决方案这是一个历史性的选择,曾经被取消。限制只有线程池实现。 有关网站,说明如下: 60个并发线程的限制仅适用于线程 池。线程池旨在快速执行许多小的 请
..
我正在寻找一个在我的Delphi应用程序中使用的线程框架。 目前我正在评估“ OmniThreadLibrary ' - 到目前为止,它看起来不错,做了我所需要的一切。 有没有其他“线程框架”为Delphi? (我使用的是D2006& D2009) 解决方案 按照Vegar建议 根据我几个小时评估 OmniThreadLibrary 以下是我喜欢的一些事情
..
我想做什么: 我在genric列表中有几个对象。我想以匿名方法捕获每个对象,并作为单独的OTL任务执行此方法。 这是一个简化的示例: 程序Project51; {$ APPTYPE CONSOLE} 使用 SysUtils,Generics.Collections,OtlTaskControl,OtlTask; type TProc =程序引用
..