子執行緒有三個變數a,b,c,怎么傳給主執行緒form1然后同時動態加載到Listview,然后主執行緒能正常運作,不假死?最好能有集體代碼示咧,謝謝啊
uj5u.com熱心網友回復:
如果a,b,c是常規變數,例如boolen,int等的話,直接使用PostMessage將變數傳遞給主執行緒。如果你的變數是string或是執行緒內申請的臨時記憶體,最好能在主執行緒中申請一結構體(注意這個結構體的生命周期)來承載著三個變數,然后在使用PostMessage來通知主執行緒,結構體已經變化。
uj5u.com熱心網友回復:
有沒有具體一點的代碼,我網上查好像sendmessage好一點,就是不會用。
uj5u.com熱心網友回復:
sendmessage發訊息,主表單的句柄,值就是了uj5u.com熱心網友回復:
SendMessage(h1,WM_SETTEXT,255,Integer(PChar(ip)));執行緒里這么發送,主執行緒里怎么接收呢?
uj5u.com熱心網友回復:
發訊息就可以了,32位系統可以傳兩個資料,總共64位。如果不夠多定義幾個訊息。uj5u.com熱心網友回復:
為什么不考慮反過來呢,在創建執行緒時將主表單的ListView物件傳遞到子執行緒中,子執行緒中怎么操作都可以,主執行緒界面都不用重繪,實時顯示。
uj5u.com熱心網友回復:
怎么傳物件到子執行緒,具體代碼怎么實作?謝謝
uj5u.com熱心網友回復:
界面上寫處理WM_SETTEXT的方法就可以接收處理了。
uj5u.com熱心網友回復:
怎么傳物件到子執行緒,具體代碼怎么實作?謝謝
為什么不考慮反過來呢,
在創建執行緒時將主表單的ListView物件傳遞到子執行緒中,子執行緒中怎么操作都可以,主執行緒界面都不用重繪,實時顯示。
重寫執行緒的建構式和解構式(建構式中可以任意數量的引數)
constructor Create(aList: TListView);
Destructor Destroy; override;
在執行緒單元中定義一個公共LIstView物件,
MainListView:TListView;
在重寫的建構式中
//執行緒構函式函式----------------------------------------------------------------
constructor TDemoThread.Create(aList: TListView);
begin
MainListView:= aList;
FreeOnTerminate:=true; //標志著執行緒執行完畢后,自動釋放資源
inherited Create(true); //執行緒創建時不執行,指定運行后方才執行,如果設為False,則一創建就運行
end;
//解構式
//執行緒解構式------------------------------------------------------------------
destructor TDemoThread.Destroy;
begin
MainListView := nil;
inherited;
end;
uj5u.com熱心網友回復:
在執行緒單元中任意地方都可以操作MainListView物件uj5u.com熱心網友回復:
為什么不考慮反過來呢,
在創建執行緒時將主表單的ListView物件傳遞到子執行緒中,子執行緒中怎么操作都可以,主執行緒界面都不用重繪,實時顯示。
同步問題呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103114.html
標籤:VCL組件開發及應用
上一篇:一段delphi代碼求轉成VBS
