Kod: Tümünü seç
procedure TThreadDataSet.Execute;
var
Msg : TMsg;
begin
FreeOnTerminate := True;
PeekMessage(Msg, 0, WM_USER, WM_USER, PM_NOREMOVE);
while not Terminated do begin
if GetMessage(Msg, 0, 0, 0) then
case Msg.Message of
WM_OPENDATASET: WMOpenDataSet(Msg);
end;
end;
end;
procedure TThreadDataSet.Open(DataSet: TDataSet);
begin
PostThreadMessage(ThreadID, WM_OPENDATASET, Integer(DataSet), 0);
end;
procedure TThreadDataSet.WMOpenDataSet(Msg: TMsg);
var
Ds : TDataSet;
begin
try
Ds := TDataSet(Msg.wParam);
Ds.Open;
except
On E: Exception do
ShowMessage(E.Message);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FThread := TThreadDataSet.Create(False);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FThread.Terminate;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FThread.Open(IBTABLE1);
FThread.Open(IBTABLE2);
FThread.Open(IBTABLE3);
FThread.Open(IBTABLE4);
FThread.Open(IBTABLE5);
FThread.Open(IBTABLE6);
ShowMessage('ok');
}
procedure TForm1.Button2Click(Sender: TObject);
begin
IBTABLE1.Open();
IBTABLE2.Open();
IBTABLE3.Open();
IBTABLE4.Open();
IBTABLE5.Open();
IBTABLE6.Open();
ShowMessage('ok');
}
denelemer sırasında dosyaların acilma süreleri değişmedi.
yani 6 dosyanın acilma süresi diyelim ki 2 saniyeden toplam 12 saniye. Thread ile bu süre yine 12 saniye.
Thread ile bu süreyi kısaltabilirmiyiz? Ya da başka bir yöntem var mıdır?
yardımcı olabilecek arkadaslara simdiden tesekkurler....