让表单关闭时保持线程运行

evi*_*one 2 delphi multithreading

我在我的应用程序上创建了一个同步线程,我想知道有没有办法让线程保持打开状态,直到它完成它的同步过程,如果我关闭申请表?

Rob*_*edy 6

在行WaitFor之后调用DPR文件中的线程方法Application.Run.如果线程已经完成运行,WaitFor则会立即返回.否则,它将暂停主线程,直到另一个线程终止.(您必须确保变量仍然引用有效TThread实例,因此不要设置其FreeOnTerminate属性.)

除了允许线程继续运行的简单问题之外,您还可以考虑其他一些事项:

  • 程序只有有限的时间停止运行,如果操作系统正在关闭或者用户正在注销的,所以你可能没有时间等待同步完成OS杀死你的程序之前.
  • 用户可能想知道为什么程序仍在运行,即使他们告诉它关闭,所以考虑在同步继续时显示一些UI.
  • 用户可能不关心同步,如果他们是在赶时间,需要的程序立即停止运行,因此在UI,你不妨提供一个"中止同步"命令.