Synchronize函数需要头文件吗 ( 积分: 10 )

  • 主题发起人 主题发起人 男生111
  • 开始时间 开始时间

男生111

Unregistered / Unconfirmed
GUEST, unregistred user!
我用CreateThread创造了一个线程,在线程中用了Synchronize函数,因为我要通过ADOQUERY读数据库,但是编译报错,“Call to undefined function Synchronize”,
不知道为什么,请高手帮忙,是否需要头文件,
我用线程类直接定义一个线程在这个线程中Synchronize函数就通过了,为什么?
 
我用CreateThread创造了一个线程,在线程中用了Synchronize函数,因为我要通过ADOQUERY读数据库,但是编译报错,“Call to undefined function Synchronize”,
不知道为什么,请高手帮忙,是否需要头文件,
我用线程类直接定义一个线程在这个线程中Synchronize函数就通过了,为什么?
 
要吧,在线程类里面吧
 
uses Classes;
 
Classes是工程一建里系统就自动加上去的,已经有了,你说的不对
 
调用Synchronize函数所在的单元必须引用 Classes
C:/Program Files/Borland/Delphi7/Demos/Threads
 
Synchronize的使用必须调用classess,因为Synchronize是Tthread的类的一个
方法。
你可以定义一个互斥元来达到同步的目的。
这是delphi中互斥元所有的方法定义,里边都是api函数
你可以提取出来用,灵活一些。
constructor TCriticalSection.Create;
begin
inherited Create;
InitializeCriticalSection(FSection);
end;

destructor TCriticalSection.Destroy;
begin
DeleteCriticalSection(FSection);
inherited Destroy;
end;

procedure TCriticalSection.Acquire;
begin
EnterCriticalSection(FSection);
end;

procedure TCriticalSection.Release;
begin
LeaveCriticalSection(FSection);
end;

procedure TCriticalSection.Enter;
begin
Acquire;
end;

procedure TCriticalSection.Leave;
begin
Release;
end;
 
以上不是问题关键。
CreateThread创建的线程不可能掉用到Synchronize函数,Synchronize函数是TThread类的
一个保护性(protected)类别的函数,只能是其派生类(代码)中才能调用,所以,如果你
自己定义一个从TThread类继承下来的线程类,就可以使用Synchronize函数了。
 
那么我在CreathThread函数中如何实现Synchronize的目的呢?也就是保护VCL的东西,例如
写数据库,动态ADOQUERY
 
接受答案了.
 
后退
顶部