ok, but in theory i can't see relevant differences between your async and
procedure ICanWait;
begin
for a:=1 to 100000 do
DoSomething;
end;
procedure DoSomething
begin
while {condition} do
begin
MoreSomethings;
application.processmessages;
end
end;
Maybe Async compile uncontrolled processmessages in every places...
PS: IMHO, in C (and others like C languages) and VB async have no relevance without await.
The syntax is not confuse... Confuse is the moment when others OS Messages must be called to not freeze your application.
ignoring syntax, what async realy do?
if the answer is "prevet freeze" then is confusing because application.processmessages do it too and you have the control when the interrupt must occurs.
if the answer is "paralel processing" then is more confusing because async runs over the same application thread!