我第一次使用 OTL,我试图使用 Async/Await 抽象。
现在,我创建了一个小程序来看看会发生什么。它只是一个按钮,它调用这个过程。
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
使用过这个库的人可以向我解释一下,为什么会出现这个错误?如果它与第一次尝试的问题有关?