C构建器中的线程
发布时间:2020-12-16 03:35:29 所属栏目:百科 来源:网络整理
导读:我是c的新手,并且不熟悉线程我希望有人可以发布一个例子或指出我正确的方向. 我有一个窗体,它在c builder中加载formShow()函数.它做我想要我的程序做的事情,但只有在那之后它才会显示实际的表格. 为此我需要线程化程序的表单和后台运行.任何人都可以帮助我吗
我是c的新手,并且不熟悉线程我希望有人可以发布一个例子或指出我正确的方向.
我有一个窗体,它在c builder中加载formShow()函数.它做我想要我的程序做的事情,但只有在那之后它才会显示实际的表格. 为此我需要线程化程序的表单和后台运行.任何人都可以帮助我吗? 解决方法
直到OnShow事件退出之后才延迟逻辑可能会更简单,而根本不使用线程.例如:
const UINT WM_DO_WORK = WM_USER + 1; void __fastcall TForm1::FormShow(TObject *Sender) { PostMessage(Handle,WM_DO_WORK,0); } void __fastcall TForm1::WndProc(TMessage &Message) { if (Message.Msg == WM_DO_WORK) { // do work here ... } else TForm::WndProc(Message); } 如果你真的想要编写代码,你可以这样做: class TMyThread : public TThread { protected: virtual void __fastcall Execute(); public: __fastcall TMyThread(); }; __fastcall TMyThread::TMyThread() : TThread(true) { FreeOnTerminate = true; // setup other thread parameters as needed... } void __fastcall TMyThread::Execute() { // do work here ... // if you need to access the UI controls,// use the TThread::Synchornize() method for that } void __fastcall TForm1::FormShow(TObject *Sender) { TMyThread *thrd = new TMyThread(); thrd->OnTerminate = &ThreadTerminated; thrd->Resume(); } void __fastcall TForm1::ThreadTerminated(TObject *Sender) { // thread is finished with its work ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |