我做了一个activeform控件,想在其中创建一个线程来执行查询操作!可我建立了线程在exe程序中完全能够调用,(13分)

  • 主题发起人 主题发起人 okgxsh
  • 开始时间 开始时间
O

okgxsh

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个activeform控件,想在其中创建一个线程来执行查询操作!可我建立了线程在exe程序中完全能够调用,

可是放到控件中就不能调用了?不知道是何原因??代码如下
//
type
//定义一个线程类
TsyncThread = class(TThread)
protected
procedure execute
override;
end;
。。。
var
//定义互斥对象句柄
HMutex: THandle = 0;
implementation

{$R *.dfm}

//线程执行主体

procedure TSyncThread.execute;
var
i: integer;
WaitReturn: DWORD;
begin
FreeOnTerminate := True;
//进入同步,防止其他线程访问
WaitReturn := WaitForSingleObject(HMutex, INFINITE);
begin
...................

end;
end;

//在窗体创建时,创建互斥量
procedure TfrmMutex.FormCreate(Sender: TObject);
begin
HMutex := CreateMutex(nil, false, nil);
end;

//在窗体释放时,释放互斥量
procedure TfrmMutex.FormDestroy(Sender: TObject);
begin
CloseHandle(HMutex);
end;

//创建线程实例

procedure TfrmMutex.btnExecuteClick(Sender: TObject);
begin
TSyncThread.Create(false);
end;

activeform控件中无法创建线程,不知道是何原因??????
 

Similar threads

后退
顶部