Wątki w obsłudze baz danych

0

Witam

Moje pytanie dotyczy stosowania wątków do obsługi zdarzeń związanych z obsługą bazy danych Interbase 6.0.1.
Obecnie współtworzę program obsługujący rozbudowaną bazę danych. Na niektórych formatkach znajdują się przyciski, których kliknięcie powoduje wywołanie tzw. procedur składowanych (Stored Procedures). Niekiedy złożoność obliczeniowa tychże procedur jest tak duża, że ich wykonanie może zająć nawet do kilkunastu minut. W tym momencie, jedyne co mogę zrobić to zatrzymać działanie programu kombinacją Ctrl+Alt+Del. Wiem że w Delphi istnieje możliwość obsługi wątków, ale nie potrafię tego zastosować w odniesieniu do baz danych.
Czy można np. stworzyć przycisk "przerwij", który wywoła odpowiednie zdarzenie i przerwie działanie procedury, bez zawieszenia pracy programu?

0

Niestety konkretnego rozwiązania Ci nie podam :P :) ale wg mnie zasada powinna być taka: tworzysz wątek obsługujący daną procedurę (Stored Procedure), tak wiec program działa dalej na drugim watku, no i teraz <ort>po prostu</ort> jeśli chcesz to przerywasz działanie wątku obsługującego procedure i w ten sposób nie wieszasz progza. Nie wiem czy dobrze mówie no ale chciałem jakos pomóc :]

0

Problem w tym że mimo to progz ciągle się wiesza.
W procedurze która ma zatrzymać wątek, umieściłem takie linijki:

procedure TThreadSortForm.StopbtnClick(Sender: TObject);
var
  blad : cardinal;
begin

    TerminateThread(tr.Handle,blad);
    EndThread(blad);
    tr.Terminate;
end;

Nie wiem czy dobrze zrobiłem. Program niby zatrzymuje tę procedure, ale kiedy zamykam aplikację (x) delphi zachowuje się tak jakby mój program dalej działał w tle. Podświetlona jest tylko ikonka PAUSE (||).

0

wedlug mnie powinienies zalozyc caly nowy watek na wykonywane operacje nad bazami dac mu uprawnienia badz wartosc taka ze moze byc pauzowany jak znajde w starych projektach to ci napisze
wtedy spod komendy buttona wywoluje pauze lub calkowity stop watka
tylko sie jutro przypomnij na gg 2448289</url>

1 użytkowników online, w tym zalogowanych: 0, gości: 1