H hongya Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-14 #1 把程序中比较耗时的地方放到一个新开的线程中,使它在后台运行,但是当打开程序立即退出的时候,程序会崩溃,提示“程序不正常结束”,我想可能是后台线程还没有执行完就退出了程序造成的,如果是这样,那么怎么才能提前结束线程或者等待线程结束再退出程序呢?
把程序中比较耗时的地方放到一个新开的线程中,使它在后台运行,但是当打开程序立即退出的时候,程序会崩溃,提示“程序不正常结束”,我想可能是后台线程还没有执行完就退出了程序造成的,如果是这样,那么怎么才能提前结束线程或者等待线程结束再退出程序呢?
神 神经蛋白质 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-14 #2 关闭程序时,判断线程是否为空。不为空则先释放线程再关闭程序
地 地质灾害 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-14 #3 Thread.Terminate; Thread.WaitFor; Thread.Free;
L luoyanqing119 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-14 #4 定义一个变量,辅初值为FALSE,当结束时辅为TRUE,,在关闭时判断是否为TRUE,如果不为TRUE就不允许关闭
H hongya Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-15 #5 To:luoyanqing119, 这样可能是一个思路,但是在用户看来就是一个问题了。
B baisu0717 Unregistered / Unconfirmed GUEST, unregistred user! 2008-08-15 #7 关闭程序后要销毁线程 procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if Thread <> nil then Thread.Terminate; Application.Terminate; end;
关闭程序后要销毁线程 procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if Thread <> nil then Thread.Terminate; Application.Terminate; end;