初めて 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;
初挑戦
このため、最初は正常に機能し、ボタンを無効にし、非同期のためにスリープしてから有効に戻します。
しかし、ボタンを 2 回目にクリックすると無効になりますが、再び有効になることはありません。
2 回目の試行
今回はメッセージを100回表示したかったのですが、1回目はうまくいきましたが、もう一度プロシージャを呼び出すと、次のエラーが発生しますTOminCommunicationEndpoint.Send: Queue is full
このライブラリを使用したことがある人は、なぜこのエラーが発生するのか説明してもらえますか? そして、それが最初の試行の問題に関連している場合は?