Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Delphi 10.1 i task

[es] :: Pascal / Delphi / Kylix :: Delphi 10.1 i task

[ Pregleda: 738 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
93.140.18.*



+4 Profil

icon Delphi 10.1 i task24.09.2020. u 10:20 - pre 42 meseci
Trebao bih savjet, ako netko ima vremena i volje. Dakle...

Više objekata bi se trebalo vrtiti istovremeno.

- krairam tRootClass=class; u kojoj su svi propery i procedure koje su zajedničke za sve klase
- kreiram tMyClass1=class(tRootClass); za svaki pojedinačni posao, ima ih cca 10
svaka tMyClass ima procedure Execute gdje obavlja ono za što je pisana, isto tako ima svoje property-e za specifične parametre kao i private procedure koje joj trebaju i pozivaju se iz Execute.

Klase pristupaju bazama (FB i MySql), postavljaju file-ove ne Web, razmjenjuju podatke: local <-> Web. U svakoj klasi je definiran njezina vlastita konekcija da bazu kao i qry-i za dohvat/upis podataka.

Ono što me zanima, prema vašem iskustvu:

1. Da li je bolje koristiti ITask ili THread? Sa ITask-om je jednostavnije (bar mi se ćini)?
2. Ako koristim ITask da li je bolje kreirati objekte MyClass u main-u, a u tasku samo pokrenuti proceduru Execute ili sve napraviti unutar taska?
3. Kako javiti main-u da su svi task-ovi završili posao. Ovo mi je bitno jer nakon toga terminiram program.
4. tRootClass ima varijable i property-e koji su prametri i koriste se u izvednim klasama. Da li je OK koristiti class var i class Property? Parametri se kasnije ne mijenjaju.
5. Trebam proceduru za upis u log file. Mislio sam ju kreirati u tRootClass, možda kao class procedure. Pošaljem joj tekst koji se upisuje u file. Jasno mi je da moram upisivati u log sa Synchronize() ili Queue(). Da li Queue() mogu koristiti u samoj proceduri u tRootClass ili ih moram koristiti u svakoj od klasa nasljednika?

Radi se o novom projektu pa bih želio na početku postaviti stvari kako treba...


 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi 10.1 i task24.09.2020. u 15:35 - pre 42 meseci
> 1. Da li je bolje koristiti ITask ili THread? Sa ITask-om je jednostavnije (bar mi se ćini)?

ITask je interfejs wrapper oko TThread klase, jeste nesto lakse sto ne moras pisati malo rucnog koda koji ide uz thread ali zato gubis finu kontrolu nad threadom. Ja licno preferiram thread uvek.

> 2. Ako koristim ITask da li je bolje kreirati objekte MyClass u main-u, a u tasku samo pokrenuti proceduru Execute ili sve napraviti unutar taska?

Nikako, svi resursi threada (konekcija ka bazi, itd) se mora kreirati u threadu, u suprotnom ces imati AV.

> 3. Kako javiti main-u da su svi task-ovi završili posao. Ovo mi je bitno jer nakon toga terminiram program.

Najsigurnije je poslati poruku glavnoj formi sa PostMessage, neces nikad imati problema.


> 4. tRootClass ima varijable i property-e koji su prametri i koriste se u izvednim klasama.
> Da li je OK koristiti class var i class Property? Parametri se kasnije ne mijenjaju.

To je isto kao i globalna promenljiva, ako se jednom upisu i posle samo citaju nema problema.

> 5. Trebam proceduru za upis u log file. Mislio sam ju kreirati u tRootClass, možda kao class procedure.
> Pošaljem joj tekst koji se upisuje u file. Jasno mi je da moram upisivati u log sa Synchronize() ili Queue(). Da li Queue() mogu
> koristiti u samoj proceduri u tRootClass ili ih moram koristiti u svakoj od klasa nasljednika?

Jedan log za svaku izvedenu klasu ili jedan zajednicki za sve? I sta je log, handle na file (dobijen preko CreateFile) ili TFileStream?
Uz standarni (sinhroni fajl handle), mozes pisati u log bez ogranicenja, pristup je thredasafe. Mozes naravno ici i preko sinhronizacije sa glavnim threadom ali nema potrebe.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Delphi 10.1 i task

[ Pregleda: 738 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.