我有一个窗体,它在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 ...}总结
以上是内存溢出为你收集整理的C构建器中的线程全部内容,希望文章能够帮你解决C构建器中的线程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)