Aplikace přistupuje do databáze a provádí výpočty v délce od minut do hodin. Během této doby je natolik vytížená, že zamrzne. Potřebuji informovat uživatele o průběhu výpočtů, nejlépe oknem s progressbarem. Jak zařídit, aby se progressbar aktualizoval i přes vytížení procesoru? Předpokládám, že progresbar by měl běžet v jiném vlákně. Jistě jde o běžnou programátorskou konstrukci, poradíte mi?
Fórum › .NET
C# Progressbar fungující i pod zatížením
Vůbec bych se nebál vyhodit tu dlouhotrvající práci do vlákna a klidně bych mu dal i o něco málo nižší prioritu, ale to není nutné. A samozřejmě aktualizovat progress jednou za čas nebo při opravdové změně (při překreslení).
Zasláno z mobilního telefonu.
#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
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Upload fungující pod PHP5 — založil mike007
Shoutbox fungující na IC — založil arzen
Podivně fungující switch — založil spider-x
ProgressBar — založil Anderos
ProgressBar — založil Frank
Moderátoři diskuze