#1 Attila
V .NET-e sa táto problematika da riesit velmi jednoducho. A to pouzitim triedy BackgroundWorker. Cize riesenie problemu by sa dalo riesit nasledovne:
// Na tomto mieste som vytvoril novu instanciu triedy ktora zobrazila dialogove okno s progressbarom
var worker = new BackgroundWorker(); // Vytvoril som novy BackgroundWorker
worker.WorkerSupportsCancellation = false; /* Nastavil som mu zabranenie zrusenia vykonavania (ja som to potreboval tak ty to mozno budes vo svojej aplikacii potrebovat inak) */
worker.DoWork += delegate
{
/* Tu som umiestnil kod, ktory sa vykonaval na pozadi. V mojom pripade to bol dotaz na databazu, ktory trval dost dlho */
};
worker.RunWorkerCompleted += delegate
{
// Tu som umiestnil kod, ktory sa ma vykonal az sa dokoncil dotaz (cize zavretie dialogoveho okna)
};
worker.RunWorkerAsync(); // Spustil som BackgroundWorker
/* Tu som umiestnil kod, ktory zobrazil dialogove okno s progressbarom
Ja som pouzil progressbar s vlastnostou IsIndeterminate = true cize progressbar, v ktorom som neriesil postupnu inkrementaciu lebo by bo bolo dost komplikovane (v mojom pripade). Da sa vsak implementovat aj klasicky progressbar s postupnym inkrementovanim priebehu. Na nasledujucom linku je nejaky kratky tutorial a na nete ich najdes viac ak by nestacil. http://www.dotnetperls.com/progressbar