ADO控件在线程中使用的问题
TADOConnection控件在线程中创建后,如果线程不退出,就打不开Excel,Word之类用的东西
测试代码如下:
Unit1.pas:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit2;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
t: Test;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
t := Test.Create(false);
end;
end.
Unit2.pas
unit Unit2;
interface
uses
Windows, Classes, ADODB, ActiveX;
type
Test = class(TThread)
private
{ Private declarations }
protected
ADODB: TADOConnection;
procedure Execute; override;
end;
implementation
{ Test }
procedure Test.Execute;
begin
CoInitialize(nil);
ADODB := TADOConnection.Create(nil);
while not Terminated do
begin
Sleep(1000)
end;
ADODB.Free;
CoUninitialize;
end;
end.
程序打开后运行后,Excel就打不开,谁知道要怎么处理才行呢?
[解决办法]
这和 Excel 打不打得开 没关系吧。。。
在线程 里面 频繁的 创建 销毁 链接
有必要吗
[解决办法]
应该是没有关系的,是你系统的有问题,跟Delphi没有关系。
[解决办法]
按那帖子说的,这样应该就行了:
建议你把ADODB := TADOConnection.Create(nil);放在线程的Create事件中,ADODB.Free;放在Destroy事件中