Thread ile aynı anda birden çok table açmak

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Thread ile aynı anda birden çok table açmak

Mesaj gönderen mikser »

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');
}
yukarıdaki thread örnegini forumdan aldım.

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....
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bilgisayar cift islemcili mi ki? Degilse herhangi bir kazanc elde edemezsin.
Cevapla