我想从多个线程/进程写入一个名为'listMessages'的TListBox,我有这两个过程来做到这一点:
1-添加对象:
procedure Log(Msg: String; Color: TColor);
begin
listMessages.Items.AddObject(Msg, Pointer(Color));
listMessages.ItemIndex := listMessages.Items.Count -1;
end;
2- 使用 TIdCriticalSection 称为protectListMessages:
procedure TMainForm.safelyLogMessage(mess : String);
begin
protectlistMessages.Enter;
try
listMessages.Items.Add(mess);
listMessages.ItemIndex := listMessages.Items.Count -1;
finally
protectListMessages.Leave;
end;
end;
你能告诉我哪个是最好的(快速+线程安全)还是告诉我第三种方法从我的线程/进程向我的 TListBox 写入消息?