🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #345858

Zeos Delphi XE2

#345858
From: konsul41
Date: Mon, 26 Jun 2017 11:47
70 lines
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-mail

Show 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