实际上,我正在使用此代码并且运行正常,但是我想知道是否正确的方法。

  while WaitForSingleObject(MyThread.Handle, 0) = WAIT_TIMEOUT do
    Application.ProcessMessages;

  ShowMessage('i am done');

最佳答案

调用Application.ProcessMessages通常被认为是代码异味。如果您无事可做,请让您的主线程空闲。

如果您经营一家公司并且需要您的一名 worker 奔赴商店并抢走一些急需的用品,那么您是否会在门前pace步直到他回来,还是您想坐在办公室休息休息等一下?他,并发现供应品在这里,因为您听到他走过门了吗?无论哪种方式,他都将花费相同的时间,但是第一种方式将使您的双腿枯竭。

同样,不要让您的UI监视线程,而是让线程报告返回给UI。一种方法是让线程使用PostMessage将自定义消息发送到启动它的表单,并在表单完成后将消息处理程序放置在表单上以对其进行响应。

10-05 22:40