通過調用synchronize
方法改變Editbox
的值,是否可以通過OnChange
事件Editbox
獲得線程響應的正確方法?我可以使用Editbox的OnChange事件來處理線程嗎?
事情是這樣的:
//Extra Thread
procedure HThread.Execute;
begin
Synchronize(CallGUI);
end;
procedure HThread.CallGUI;
begin
Edit.Text = 'Hello';
end;
//Main Thread
procedure Main;
begin
Tr := HThread.Create(true);
Tr.Edit := Form1.Edit1;
Tr.Resume;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
ShowMessage('Response from extra thread :' + Edit1.text);
end;
您是否可以編輯問題以添加事件的時間線樣式描述?我不清楚你想做什麼,因爲一個'TEdit.OnChange'響應於編輯框的變化而觸發,並且在主線程中。同步方法是您在後臺線程中使用的某些內容在主VCL線程中發生的事情,而不是您從OnChange調用的內容。 – 2011-04-20 10:41:57
編輯問題 – Kermia 2011-04-20 11:19:21
您的問題標題與問題主體不匹配(OnChange事件處理程序不處理與線程相關的任何事情)。你發佈的代碼不能編譯,所以我們不能真正猜到你在做什麼。忽略編譯器錯誤,不禁要問,爲什麼不直接從'CallGUI'調用'ShowMessage'。也許你應該解釋你想要做什麼,就像在「最終目標」中一樣。 – 2011-04-20 11:33:45