导航:
论坛 -> 移动应用开发
斑竹:flyers,iamdream
作者:
2023/2/5 10:44:51
标题:
如何在线程执行完毕以后接着执行一些代码?代码如下:
浏览:727
加入我的收藏
楼主:
void __fastcall TForm1::RoundRect1Click(TObject *Sender) { RoundRect1->Enabled=false; autoPlay=true; //开始自动移动方块 TMyThread *th=new TMyThread(false,this); // th->WaitFor(); //WaitFor会使线程循环中动画更新主窗体界面无效 // delete th; autoPlay=false; RoundRect1->Enabled=true; }
----------------------------------------------
-
作者:
hs_kill (lzl_17948876)
★☆☆☆☆
-
普通会员
2023/2/5 11:25:59
1楼:
线程结束事件里写呗
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
2023/2/5 13:06:40
2楼:
@1楼 OnTerminate事件中可以用Synchronize吗?
----------------------------------------------
-
作者:
2023/2/5 13:24:10
3楼:
OnTerminate事件中不用Synchronize直接调用MainForm的函数就行吧?
----------------------------------------------
-
作者:
hs_kill (lzl_17948876)
★☆☆☆☆
-
普通会员
2023/2/5 15:56:27
4楼:
如果你用的是TThread那么就不用Synchronize 因为OnTerminate已经是Synchronize调用了 建议你看看源码, 写的很清楚 property OnTerminate: TNotifyEvent read FOnTerminate write FOnTerminate; procedure TThread.DoTerminate; begin if Assigned(FOnTerminate) then Synchronize(CallOnTerminate); end; procedure TThread.CallOnTerminate; begin if Assigned(FOnTerminate) then FOnTerminate(Self); end;
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
2023/2/5 18:49:13
5楼:
@4楼 我是希望线程执行完后立即执行相关代码,不要通过UI线程消息排队响应消息执行。
----------------------------------------------
-
作者:
2023/2/5 19:59:54
6楼:
需要访问UI的写在OnTerminate里 不需要同步的你直接把代码写在execute里放最后不就好了
----------------------------------------------
-
作者:
2023/2/5 21:23:11
7楼:
@6楼 有道理,我放在OnTerminate里了,因为一个控件需要enable
----------------------------------------------
-