gpt4 book ai didi

delphi - 将我的显示器设置为 dll 中的任务时出现错误 "Task can be only monitored with a single monitor"

转载 作者:行者123 更新时间:2023-12-03 15:46:36 27 4
gpt4 key购买 nike

我在 dll 中使用 OmniThreadLibrary 2.09,主应用程序和 dll 使用相同的 SimpleShareMem 内存管理器。

我用以下代码创建了自己的监视器:

  FMonitor: TOmniEventMonitor;
...
FMonitor := TOmniEventMonitor.Create(nil);

当我尝试使用此监视器创建新任务时,收到错误“只能使用单个监视器监视任务”

FTask := OtlTaskControl.CreateTask(TaskWorker)
.OnMessage(
procedure(const ATaskControl: IOmniTaskControl; const AMsg: TOmniMessage)
begin
...
end)
.MonitorWith(FMonitor) // <----- Error
.OnTerminated(
procedure (const ATaskControl: IOmniTaskControl)
begin
...
end)
.Run();

如何使用自己的监视器监控我的任务?

最佳答案

OnMessage 函数创建隐式监视器,该监视器接收任务消息并调用您的匿名函数。 OnTermated 也是如此。

如果您希望使用 MonitorWith,则应该将消息处理和终止处理实现为监视器事件,而不是使用 OnMessage/OnTermulated 函数。

关于delphi - 将我的显示器设置为 dll 中的任务时出现错误 "Task can be only monitored with a single monitor",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508691/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com