Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zasto ne radi timer kako treba?

[es] :: .NET :: Zasto ne radi timer kako treba?

[ Pregleda: 2413 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

djmrky
Novi Sad

Član broj: 25160
Poruke: 179
212.62.36.*



Profil

icon Zasto ne radi timer kako treba?11.05.2005. u 07:46 - pre 237 meseci
Dakle, zelim da napravim najobicniji timer na formi, ali nece nikako da mi radi kako treba. Funkcija je otprilike sledeca (zelim da izbrojim koliko protekne vremena u drugoj foreach petlji dole):
Code:

private void btnAnalyzeAllOBJs_Click(object sender, System.EventArgs e) {
            foreach (ListViewItem lvi in lvOBJs.Items){
                lvi.ForeColor = Color.Black;
                lvi.Selected = false;
            }
                         timer1.Enabled = true; //ovde valjda startujem timer
            foreach (ListViewItem lvi in lvOBJs.Items){
                Console.Out.WriteLine("Entered foreach");
                sCurrentlySelectedOBJ = lvi.Text;
                sCurrentlySelectedOBJName = lvi.SubItems[1].Text;
                lviCurrentlySelected = lvi;
                gbStatistics.Refresh();
                btnLoadData_Click(sender, e); //poziva se druga funkcija
                                          //koja, btw pristupa bazi (ako to ima veze)
                pbAllOBJsAnalysis.Value = lvi.Index + 1;
            }
                         timer1.Enabled = false; //ovde kao zaustavljam timer


namestio sam timer da radi tick svakih 500ms i u toj funkciji za timer menjam tamo neki label. Problem je u tome sto se ta funkcija uopste ne izvrsava svakih 500ms. U konkretnom slucaju, na nekih 10sec (od ulaska u petlju, program se zaustavlja i izbacuje neki moj dialog i u tom momentu (znaci kad se valjda suspendovao taj glavni thread) ona timer funkcija se izvrsava zaredom toliko puta koliko je vremena proslo i to na svakih 500ms.

Probao sam cak i da napravim poseban thread u kom pokrecem timer (pa cak i da stavim visi prioritet tom thread-u, ali ne radi nikako, uvek se timer event izvrsava tek kad se program zaustavi u toj petlji

GDE JA OVDE GRESIM?

Pozdrav
Dusan
She's nice from a far, but far from nice.
 
Odgovor na temu

Deep|Blue
Srce Srbije

Član broj: 631
Poruke: 1431
*.148.eunet.yu.

ICQ: 101830817


+314 Profil

icon Re: Zasto ne radi timer kako treba?12.05.2005. u 18:08 - pre 237 meseci
pa greska je u tome sto nisi dodao zlicicu vegete . :)

uprosteno, pazi tvoja for each petlja mao vise zaokupi procesor, i u takvoj situaciji on nece da se zamara iscrtavanjem ekrana tebi potrebnim vrednostima. da bi to uradio trebas negde u petlji da dodas poziv
application.doevents i
eventualno
me.invalidate
ono sto ti je tu problem jeste sto ce ti to malo uspori izvrsavanje, ali usput i nije potreban timer.
bolja opcija je da podelis nekako tu petlju (ili dodas neki if uslov) gde bi osvezavane ekrana vrsio svako 20-30 perioda for petlje.
"Hmmm", rekao je, "...suprostavlja se nadrealizmu prikrivene metafore..." Razmišljao je tome na trenutak, a onda je zatvorio beležnicu s mrkim osmehom.
"I smrt je za njih suviše dobra"
 
Odgovor na temu

djmrky
Novi Sad

Član broj: 25160
Poruke: 179
212.62.36.*



Profil

icon Re: Zasto ne radi timer kako treba?13.05.2005. u 07:54 - pre 237 meseci
da, osim sto sam ja probao i sa app.DoEvents i sa label.Refresh (ovaj Invalidate, doduse, nisam probao (znam da je to bilo u c++-u) i, kao sto rekoh, u posebnom thread-u (sa visim prioritetom) i opet ne radi

a btw, konkretno jedan prolaz petlje traje vise od 1sec a ja hocu da u toku tog jednog prolaza nekoliko puta osvezavam label

Pozdrav
She's nice from a far, but far from nice.
 
Odgovor na temu

[es] :: .NET :: Zasto ne radi timer kako treba?

[ Pregleda: 2413 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.