Article View: pl.comp.lang.delphi
Article #345858Zeos Delphi XE2
From: konsul41
Date: Mon, 26 Jun 2017 11:47
Date: Mon, 26 Jun 2017 11:47
70 lines
3443 bytes
3443 bytes
Delphi XE2
ZEOS 7.0.3
Zapytanie nie dotyczy baz danych dlatego tutaj.
Czy ZEOSY są bezpiecznie w wątkach?
na formie leży ZConnecion
Na formie leży Query,DataSource i DBGrid
do DBGrida podpięte jest pobieranie danych w postaci BlobStream
Query := TZQuery.Create(nil);
try
Query.Close;
Query.Connection := ZQPoczta.Connection;
Query.SQL.Text := 'Select dane,nazwapliku,id from pliki where id=:id;';
Query.ParamByName('id').AsInteger := StrToInt(tmpf);
Query.Open;
if Query.RecordCount>0 then
begin
BS := Query.CreateBlobStream(Query.FieldByName('dane'),bmRead);
TBlobField(Query.FieldByName('dane')).SaveToStream(Stream);
result:=Query.FieldByName('nazwapliku').Text;
end;
finally
Query.free;
end;
następnie tworzę wątek
TPobierzPoczte = class(TThread)
private
FZTable1 : TZTable;
FConnection : TZConnection;
{ Private declarations }
IdMessage: TIdMessage;
IdPOP3: TIdPOP3;
wiadomosc : String;
FDaneProgram : TDaneProgram;
protected
procedure Execute; override;
procedure PobierzWiadomosci(host : String; user : String;password:
String; all : boolean=false);
function ZapiszPlikWBazieFTP(Stream : TStream;filename:
String):Integer;
procedure SendWiadomosc;
procedure RefreshDBGrid;
public
constructor Create(CreateSuspended: Boolean;DaneProgram :
TDaneProgram; Connection : TZConnection); overload;
end;
i w PobierzWiadomosci
pobieram wiadomości oraz przez Synchronize(...
wykonuję operacje na formie: Odświeżanie DBGrida i dodawanie tekstu do memo
Wszystko jest w porządku gdy nie dotykam DBGrida(w Aplikacji). Widzę
komunikaty wysyłane z wątku oraz nowe pozycje DBGrida(podczas
odświeżania z wątku) . Problem pojawia się gdy w wątku pobierane są
wiadomości a ja w tym czasie zaczynam "na pałę" klikać DBgrida i dostaję
błąd "SQL Error: lost synchronization with server: got message type "D",
length..."
wątek główny podaje Błąd: "SQL Error: could not receive data from
server: Socket operation on non-socket (0x..."
następnie sypią się ACCES violation w ZComponent160.bpl i mozna zabijać
aplikację.
Z trąd moje pytanie czy ZEOSY są bezpieczne wątkowo ewentualnie jak to
prawidłowo zrobić?
Technical Details
Message-ID:
<5950f43c$0$15190$65785112@news.neostrada.pl>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!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailShow Full Headers
Complete Article Headers
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!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Newsgroups: pl.comp.lang.delphi X-Mozilla-News-Host: news://news.neostrada.pl:119 From: "konsul41@wp.pl" <konsul41@wp.pl> Subject: Zeos Delphi XE2 Date: Mon, 26 Jun 2017 13:47:08 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 Lines: 71 Message-ID: <5950f43c$0$15190$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 83.12.127.25 X-Trace: 1498477628 unt-rea-a-02.news.neostrada.pl 15190 83.12.127.25:50471 X-Complaints-To: abuse@news.neostrada.pl X-Received-Body-CRC: 3582346945 X-Received-Bytes: 3340 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit