不会啊,打得开啊。
unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, ActiveX;type
  Test = class(TThread)
  private
    { Private declarations }
  protected
    ADODB: TADOConnection;
    procedure Execute; override;
  end;  TForm2 = class(TForm)
    ADOConnection1: TADOConnection;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form2: TForm2;
  t: Test;implementation{$R *.dfm}{ Test }procedure Test.Execute;
begin
  CoInitialize(nil);
  ADODB := TADOConnection.Create(nil);
  while not Terminated do
  begin
    Sleep(1000)
  end;
  ADODB.Free;
  CoUninitialize;
end;procedure TForm2.FormCreate(Sender: TObject);
begin
  t := Test.Create(false);
end;procedure TForm2.FormDestroy(Sender: TObject);
begin
  if Assigned(t) then
  begin
    t.Terminate;
    t.WaitFor;
    t.Free;
  end;
end;end.

解决方案 »

  1.   

    .NET框架下的office就打的开,office2003打不开。
      

  2.   


    建议你把ADODB := TADOConnection.Create(nil);放在线程的Create事件中,ADODB.Free;放在Destroy事件中,CoInitialize(nil);和CoUninitialize;在每次操作数据时才调用CoInitialize(nil);
    try
      //操作数据库
    finally
      CoUninitialize;
    end;
      

  3.   

    在线程的Create事件中不需要用CoInitialize(nil);和CoUninitialize;
      

  4.   

    这和  Excel  打不打得开 没关系吧
    在线程 里面 频繁的 创建 销毁 链接
    有必要吗
      

  5.   

    线程中没有频繁的 创建 销毁 链接啊,我这个线程只运行一次,只是运行一直到程序退出,线程里的循环是对ADOConnection进行操作的。
      

  6.   

    应该是没有关系的,是你系统的有问题,跟Delphi没有关系。
      

  7.   

    http://bbs.csdn.net/topics/390472740
    这个帖子里找到原因了,就是因为在ADOConnection创建的时候生成了IME的窗口,部分Office打开的时候使用Sendmessage向IME窗口发送消息,而线程中没有处理消息就会导致假死现象。
      

  8.   


    建议你把ADODB := TADOConnection.Create(nil);放在线程的Create事件中,ADODB.Free;放在Destroy事件中,CoInitialize(nil);和CoUninitialize;在每次操作数据时才调用CoInitialize(nil);
    try
      //操作数据库
    finally
      CoUninitialize;
    end;按那帖子说的,这样应该就行了:
    建议你把ADODB := TADOConnection.Create(nil);放在线程的Create事件中,ADODB.Free;放在Destroy事件中
      

  9.   

    线程中释放IME窗口,在创建其它COM对象的时候也是需要的。