首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我要从OTL中得到这个错误?

为什么我要从OTL中得到这个错误?
EN

Stack Overflow用户
提问于 2014-04-08 03:54:06
回答 1查看 298关注 0票数 1

我第一次使用OTL,我试图使用异步/等待抽象。

现在,我创建了一个小程序,只是为了看看会发生什么。它只是一个按钮,它调用这个程序。

代码语言:javascript
复制
procedure TForm2.Button1Click(Sender: TObject);
var i : integer;
begin
Button1.enabled := false; //Only for second try

for i := 0 to 100 do
begin

Async(
  procedure begin
    sleep(5000);
end).
Await(
  procedure begin

  //First Try - Button1.Enabled := true;

  //Second Try - showmessage('finished')

  end
);

Button1.enabled := true; //Only for the second try.

  end;
end; 

第一次尝试

为此,它第一次很好地工作,禁用按钮,为异步睡眠,然后启用它。

但是当我第二次点击这个按钮时,它被禁用了,但是再也没有被启用过。

第二次尝试

这一次我想显示一个消息x100时间,它也是第一次工作,但当我再次调用该过程时,我得到以下错误TOminCommunicationEndpoint.Send: Queue is full

使用过这个库的人能向我解释一下为什么我会犯这个错误吗?如果这与第一次尝试的问题有关呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-08 06:05:42

似乎您正在触及OTL的内部限制。

每个对异步等待的调用都启动一个新线程并立即返回。当循环完成后,您将得到100个线程,每个线程在执行等待代码之前等待5秒。

AFAIK,在使用线程池时,OTL中有60个并发线程的限制。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22927195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档