[ Cyberghost @ 09.11.2010. 15:18 ] @
Platforma: Windows CE
jezik: C#

Vrsim upis u bazu podataka 20.000 slogova koje sam preuzeo sa centralne baze na racunaru.
Taj proces traje oko 6 minuta i zelim da se korisniku prikaze proces upisa tipa 1/20.000, 2/20.000 ...... 20.000/20.000.
Posto je ovaj proces jako brz korisniku se label-a koja prikazuje ovaj tekst ne menja dok ne dodje do kraja procesa i vidi samo 20.000/20.000,
evo jednostavnog primera bez baze

onButtonClick event
Code:

 for (int i = 0; i < 20; i++)
            {
                for (int j = 0; j < 1000000; j++)
                {
                    j++;
                }
                label1.Text = i.ToString();
            }


U ovom primeru korisnik vidi na label1 tekst kada dodje na 19 a u medjuvremenu nista.
Cak sam probao i sa thread-om da uspavam proces na 1 sekundu i opet nista, ima li neko ideju ?
[ Toxter @ 09.11.2010. 15:56 ] @
Zato sto to radis (tih 20000 upisa) u GUI thread-u.

To odradi u background thread-u a obavesti GUI preko BackgroundWorker-a (hmm, nisam siguran da li ovo ima u .NET CE).
Takodje, nema potrebe da opterecujes GUI 20000 puta. Izracunaj 1% i svaki put kad zavrsis 1% opisa obavesti GUI (ovo ti je zgodno i za ProgressBar).

Pozdrav