Article View: pl.comp.lang.delphi
Article #346178Problem z synchronizacją wątków i DB
From: ExM
Date: Tue, 21 Nov 2017 15:10
Date: Tue, 21 Nov 2017 15:10
35 lines
2730 bytes
2730 bytes
Hej, mam taki nietypowy problem: Mam sobie bazę danych MSSQL (komponenty Devart - choć to raczej bez znaczenia) Dane odświeżam sobie w osobnym wątku query.Active:=False; / query.Active:=True; czy tam: query.Refresh; query ma Zdarzenie: AfterOpen i AfterRefresh które powoduje modyfikację napisów na formie głównej aby więc to prawidłowo zrealizować powinienem użyć procedury Synchronize - inaczej program się najczęściej zwiesza / wysypuje. Tylko jak to zrobić z procedurami które odpalają się jako zdarzenia w wyniku działania wątku który wykonuje otwarcie czy odświeżenie wyników query? Mogę odłączyć na czas otwierania tabelki te procedury i po odświeżeniu danych ponownie je podłączyć np tak: //procedura uruchamiana w osobnym wątku procedure test(obiekt: TMSQuery); var s,t:TDataSetNotifyEvent; Begin s:=obiekt.AfterOpen; obiekt.AfterOpen:=nil; t:=obiekt.AfterScroll; obiekt.AfterScroll:=nil; ... obiekt.Active:=False; obiekt.Active:=True; ... obiekt.AfterScroll:=t; obiekt.AfterOpen:=s; end; Tylko wtedy nie wykona się procedura AfterOpen - która powinna się wykonać ale za pomocą Synchronize. Wywołanie Synchronize(TThreadMethod(obiekt.AfterOpen)) - powoduje wysypanie się aplikacji tak jak by nie następowała synchronizacja (zwis/koniec aplikacji) Jak powinienem zrobić to prawidłowo aby nie dochodziło do konflitów między watkami?
Technical Details
Message-ID:
<90a4ea00-38f5-45fc-b22c-7db238f908e2@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer01.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!i6no2764008itb.0!news-out.google.com!x87ni1731ita.0!nntp.google.com!i6no2764002itb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 10.36.179.70 with SMTP id z6mr1227922iti.36.1511277046924; Tue, 21 Nov 2017 07:10:46 -0800 (PST) X-Received: by 10.157.42.99 with SMTP id t90mr734185ota.5.1511277046516; Tue, 21 Nov 2017 07:10:46 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer01.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!i6no2764008itb.0!news-out.google.com!x87ni1731ita.0!nntp.google.com!i6no2764002itb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Tue, 21 Nov 2017 07:10:46 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.173.208.186; posting-account=doVJ9goAAADBJ8SWJkb9r0xXWw28WhQg NNTP-Posting-Host: 5.173.208.186 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <90a4ea00-38f5-45fc-b22c-7db238f908e2@googlegroups.com> Subject: Problem z synchronizacją wątków i DB From: ExM <grupywyt-nijto@mv.net.pl> Injection-Date: Tue, 21 Nov 2017 15:10:46 +0000 X-Received-Body-CRC: 1660130461 X-Received-Bytes: 2902 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit