读书人

子线程不能共享应用主线程的动态数组变

发布时间: 2012-08-08 14:32:45 作者: rapoo

子线程不能共享使用主线程的动态数组变量吗?
子线程不能共享使用主线程的动态数组变量吗?

在主线程定义了动态数组变量
如下所示:

Type

TArrayType: array of string;

主窗体中

A1:TArrayType;



子线程:
A1:TArrayType;


setlength(A1,length(A1)+1);

A1[0]:='aaaa';


主窗口调用子线程
var
s: string;
DataThread: TClientDataThread;
begin
// create thread
DataThread:= TClientDataThread.Create(true);
DataThread.A1:=A1;

DataThread.resume;

子线程执行后,发现主窗体中的动态数组变量长度还是0,如何共享呢?

[解决办法]
取消定义子线程里的a1。记得存取a1时要加锁,无论是主线程还是子线程。
[解决办法]
A1放到一个公用单元里面,并在这个公用单元里给出加解锁的方法。
[解决办法]
子线程直接加锁访问主线程变量

读书人网 >.NET

热点推荐