Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: Maverich - Dicembre 30, 2014, 04:38:23 pm

Titolo: messaggi di windows
Inserito da: Maverich - Dicembre 30, 2014, 04:38:23 pm
questione penosa.., un Server Windows 2008 con DC + Cache Write disabilitata + servizi vari, impiega diversi secondi ad eseguire una query
anche di soli 10 record, che il Blob sia da 2 Mb o da 100 Mb non cambia.
TB_IMMAGINI.IMMAGINE e' il campo Blob

e' un problema di comunicazione clinet -> server widows, su qualuque Pc in lan (anche un vecchio Nb con XP e 512 mb ram, anche se completa la query in 10-15 sec non compare mai "non rsiponde")

Codice: [Seleziona]
SELECT TB_IMMAGINI.ID, TB_IMMAGINI.DATA, TB_IMMAGINI.NOMEFILE, TB_IMMAGINI.DIMENSIONE, TB_IMMAGINI.IMMAGINE
FROM TB_IMMAGINI
WHERE TB_IMMAGINI.ID <:IdValore
ORDER BY TB_IMMAGINI.ID

il problema e' che superati 5 sec di attesa, nel titolo del form appare "non risponde", dando l'impressione di applicazione congelata.

per verifica ho provato a creare un Timer che si attiva prima dell'esecuzione della Query (per visualizzare un messaggio e incrementare un contatore) e disattivarsi a Query eseguita.

mi sembra che non serva, durante l'esecuzione della Query il contatore sui  ferma in ogni caso

La cosa a quanto pare dipende dalle code dei mesasggi di windows, c'e' modo di evitararlo/interecettare il messaggio ?
a mio modo di vedere anche un thread non risolverebbe i restando comunque in attesa dell'esecuzione della Query.

Codice: [Seleziona]
   //query di selezione
    ZQuery1.ParamByName('IdValore').AsInteger := iNrRecordQuery; //iNrRecordQuery un valore che inserisco in un TEdit per stabilire quanti record estrarre
    ZQuery1.Prepare;
    ZQuery1.Open;
     bStatoTimer := false;