我正在使用Delphi开发一个单线程应用程序,这将执行一个耗时的任务,如下所示:
// time-consuming loop
For I := 0 to 1024 * 65536 do
Begin
DoTask();
End;
Run Code Online (Sandbox Code Playgroud)
循环启动时,应用程序将丢失对最终用户的响应.那不是很好.由于其复杂性,我也不想将其转换为多线程应用程序,因此我相应地添加了Application.ProcessMessages,
// time-consuming loop
For I := 0 to 1024 * 65536 do
Begin
DoTask();
Application.ProcessMessages;
End;
Run Code Online (Sandbox Code Playgroud)
但是,这次虽然应用程序将响应用户操作,但循环中消耗的时间远远大于原始循环,大约10倍.
有没有一种解决方案可以确保应用程序不会丢失响应而不会过多地增加消耗时间?
delphi ×1