請教如何在副執行緒中使用主程式所宣告的觸發事件? |
答題得分者是:jbinfo
|
yoan4560409
一般會員 發表:11 回覆:7 積分:3 註冊:2006-08-04 發送簡訊給我 |
|
jbinfo
一般會員 發表:9 回覆:25 積分:16 註冊:2004-05-10 發送簡訊給我 |
yoan4560409你好,不知道以下方法能不能解決你的問題:
//Thread程式定義如下:
//event function pointer
typedef void __fastcall ( __closure *onclick )( TObject *Sender );
class TestEvent : public TThread
{
private:
void __fastcall MainEvent();
protected:
void __fastcall Execute();
public:
__fastcall TestEvent(bool CreateSuspended);
public:
onclick Thread_OnClick;
};
//---------------------------------------------------------------------------
//Thread實作程式如下
__fastcall TestEvent::TestEvent(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall TestEvent::Execute()
{
//---- Place thread code here ----
Synchronize( MainEvent );
}
//---------------------------------------------------------------------------
void __fastcall TestEvent::MainEvent()
{
Thread_OnClick( this );
}
//---------------------------------------------------------------------------
//我在主表單裡先拉二個Button,第一個Button事件如下
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("OnClick");
}
//---------------------------------------------------------------------------
//第二個Button事件如下
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TestEvent *_event = new TestEvent( true );
_event->Thread_OnClick = Button1->OnClick;
_event->Resume();
}
如此一來,我就可以在執行緒裡執行主程式的事件,希望對你有幫助
|
yoan4560409
一般會員 發表:11 回覆:7 積分:3 註冊:2006-08-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |