|
| Interbase og tråde Fra : Ukendt |
Dato : 03-02-03 21:12 |
|
Hej
Jeg sidder lige og fedter lidt med Interbase 6.01 og tråde (og Delphi
6). Så vidt jeg har forstået skal hver tråd have sin egen IBDatabase
komponent.
Jeg har en main-form, hvor jeg via en knap kan starte et vist antal
tråde. I min tråd opretter jeg de nødvendige database objekter. Men
lige så snart jeg prøver at åbne databasen hænger tråden?
Det mærkelige (for mig) er dog, at det virker hvis jeg med min
for-løkke kun opretter én tråd. Lige så snart jeg opretter flere, så
får linien med myDB.Open tråden(e) til at hænge. Nogen der kan hjælpe
lidt? På forhånd tak.
procedure TfrmMain.Button1Click(Sender: TObject);
var
Index: Integer;
MinTraad: MyThread;
begin
for Index := 1 to 10 do
begin
MinTraad := MyThread.Create(True);
MinTraad.Index := Index; // Indikerer hvilket nr. tråden har
MinTraad.Resume;
end;
end;
Koden til hver tråd ser ud som nedenstående. (Hav for øje at det kun
er et banalt eksempel).
procedure MyThread.Execute;
var
myDB: TIBDatabase;
myTrans: TIBTransaction;
begin
frmMain.ListBox1.Items.Add(IntToStr(Index) + '. Thread start');
myDB := TIBDatabase.Create(frmMain);
myTrans := TIBTransaction.Create(frmMain);
myDB.DatabaseName := ExtractFilePath(Application.ExeName) +
'test.gdb';
myDB.DefaultTransaction := myTrans;
myDB.LoginPrompt := False;
myDB.Params.Clear;
myDB.Params.Add('user_name=sysdba');
myDB.Params.Add('password=masterkey');
myDB.Open;
myTrans.Free;
myDB.Free;
frmMain.ListBox1.Items.Add(IntToStr(Index) + '. Thread end');
end;
Mvh, Claus
--
I never apologize! I'm sorry, but that's the way I am.
- Homer Simpson
| |
Claus Nielsen (04-02-2003)
| Kommentar Fra : Claus Nielsen |
Dato : 04-02-03 12:30 |
|
For at svare på mit eget spørgsmål, så var tricket tilsyneladende
blot, at sætte databasename med 'localhost:' - sådan her:
myDB.DatabaseName := 'localhost:' +
ExtractFilePath(Application.ExeName) + 'test.gdb';
Men nogen der ved om det virkelig er nok? Eller mangler der noget
fancy i min kode for, at gøre det "mere sikkert"? Umiddelbart som jeg
forstår, så burde det være nok, at hver tråd connecter igennem hver
sit database objekt - men gør jeg det rigtigt?
Mvh, Claus
| |
|
|