【发布时间】:2015-08-26 16:43:23
【问题描述】:
我正在编写一个自定义类,它应该能够连接到表单上的 TMemo FireMonkey 组件,以便将信息记录到其中。该类定义为:
TBlokData = class
private
[weak] FLogMemo: TMemo;
procedure Log(s : string);
public
constructor Create(ConnStr: string);
property LogMemo : TMemo read FLogMemo write FLogMemo;
destructor Destroy; override;
end;
Log 方法的实现是:
procedure TBlokData.Log(s : string);
begin
if Assigned(FLogMemo) then
FLogMemo.Lines.Add(TimeToStr(Now) + ': ' + s);
end;
如果我在线程中创建类对象并使用 FireMonkey 表单上的 Memo1 组件填充 LogMemo 属性,我担心我的类将不再是线程安全的,因为我将操作调用Log 方法时,来自线程的窗体上的组件。
这是一个有效的担忧吗?如果是这样,我怎样才能使其线程安全,同时在线程环境之外保持类的可用性?
【问题讨论】:
标签: delphi thread-safety