Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Architektura formulářové aplikace C#

V prvom rade si treba uvedomiť, že keď programuješ UI aplikáciu, tak väčšinou obsluhuješ udalosti. Takže ak chceš, aby sa nejaký kód vykonal až vtedy, keď sa formulár zobrazí, tak ten kód umiestni do obsluhy udalosti Form.Shown.

Pokiaľ potrebuješ vykonávať nejaké dlhšie trvajúce operácie tak, aby si neblokoval UI vlákno, tak ich musíš vykonávať na pozadí, t.j. na inom vlákne. Vtedy treba myslieť na to, že k formulárovým prvkom nesmieš pristupovať z iného než UI vlákna. Na toto sa kedysi používal BackgroundWorker, dnes by si si mal vystačiť s async/await.

Ináč pokiaľ chceš riešiť nejakú architektúru aplikácie, tak by si rozhodne nemal miešať UI kód s SQL kódom. V normálnej aplikácii by som čakal, že volanie SQL príkazov pre zmluvy bude v samostatnej triede, napr. SqlContractProvider (odporúčam používať všade angličtinu a nemiešať do toho české slová). Tá by mala načítané hodnoty z databázy uložiť do modelu, t.j. triedy Contract, ktorá reprezentuje samotnú zmluvu. A mapovanie z tohto modelu do jednotlivých formulárových polí by si mal zabezpečiť samotný formulár, nie nejaká pomocná trieda, ktorá v podstate ani nevie, s akým presne formulárom vôbec pracuje.

Pri objektoch, ktoré implementujú rozhranie IDisposable, vysoko odporúčam používať using, aby sa alokované prostriedky uvoľnili aj v prípade, že nastane nejaká chyba.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny