+ -
当前位置:首页 → 问答吧 → 关于线程内ClientDataSet 报错:Invalid argument

关于线程内ClientDataSet 报错:Invalid argument

时间:2011-08-29

来源:互联网

unit Thread;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,IdBaseComponent, IdComponent, IdUDPBase,
  monitor,DBClient,SConnect;


type
  TQueryThread = class(TThread)
  private
  { Private declarations }
  m_cds:TClientDataSet;
  m_connect:TSocketConnection;
  protected
  procedure Execute; override;
  end;

implementation

{ TQueryThread }

procedure TQueryThread.Execute;
begin
  { Place thread code here }
  m_cds := TClientDataSet.Create(nil);
  m_connect := TSocketConnection.Create(nil);
  m_connect := FrmMonitor.SocketConnection1; //调用主窗体中的SocketConnetion,并将主窗体赋值给m_connect

  m_cds.RemoteServer := m_connect;  
  m_cds.ProviderName := 'dspWhiteInfo';
  with m_cds do
  begin
  if Active then
  Close;
  CommandText := 'select pe_sysno as cardinfo from person ';
  Open; //执行到此处,报错:Invalid argument
  end;
end;



end.

作者: lanyuxcm   发布时间: 2011-08-29

线程内尽量不要去操作 FORM中的控件。
把FrmMonitor.SocketConnection1 移到线程内,试试

作者: aBung   发布时间: 2011-09-01