[ shandu85 @ 04.08.2007. 23:13 ] @
| Konkretno, imam sledeći deo koda:
Code:
//deo koda
neka_Funkcija_Koja_Radi_Veoma_Dugo()
//ostali deo koda
Sada bih želeo da dok se ta funkcija izvršava, da se izbaci neki pop-up sa natpisom "please wait...", ili tako nešto slično. Interesuje me konkrtan kod, pošto ni ovde na forumu a ni na msdn nisam uspeo da nađem nešto korisno. |
[ bjevta @ 05.08.2007. 08:41 ] @
najjednostavniji način jeste da se napravi forma (dijalog) na koji, po potrebi, može da se stavi progress bar kontrola. Onda se forma otvori sa myForm.Show() i nastavi procesiranje. U toku procesiranja povremeno se ispaljuje event tipa OnProgress( int percentComplete ), forma hvata taj event a percentComplete bude Value progress bar-a. Napomena: pošto ovakva forma nije modalna, korisnik može da startuje i neku drugu ili istu operaciju na parent formi. Da bi se to izbeglo, gui komande parent forme (meni, toolbar, context menus) mora da bude isključen.
Postoji i varijanta sa asinhronim izvršavanjem i callback-om.
[ prog @ 07.08.2007. 11:45 ] @
Ovo sto je prethodnik rekao samo na jeziku C#
Code:
private void FunkcijaKojaPokreceVeumaDuguFunkciju()
{
//Pokrenemo backgroundWorker
//Prije toga formiramo objekat backgroundWorker1 klase BackgroundWorker)
backgroundWorker1.RunWorkerAsync();
//prikazujemo Progres Dijalog
progresDijalog.Show();
}
//Kada se pozove backgroundWorker1.RunWorkerAsync(); ova funkcija se poziva u drugoj niti
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
neka_Funkcija_Koja_Radi_Veoma_Dugo();
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//Ovjde ide refres za progres dijalog ili nesto drugo
}
//Kada se nasa funkcija zavrsi poziva se RunWorkerCompleted
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//zatvaranje progres dijaloga
progresDijalog.Close();
}
Procitaj malo oko ove klase ima jos opcija koje bi ti dobro dosle
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.