Forum » Programiranje » C# osveževanje app
C# osveževanje app
zacetnik11 ::
Pozdravljeni
Imam težavo pri izdelavi C# aplikacije in sicer, ne vem kako naj naredim da se mi textBlok osvežuje vsakih 10 sekund.
V textBloku imamm prikazano vrednost iz baze, zaradi tega želim da se mi osvežuje vsakih 10sek.
Sem že poskusil z Thread.Sleep, vendar ne dela vredu.
Mogoče kakšen predlog, če je kdo že kaj podobnega delal.
Hvala za pomoč.
Imam težavo pri izdelavi C# aplikacije in sicer, ne vem kako naj naredim da se mi textBlok osvežuje vsakih 10 sekund.
V textBloku imamm prikazano vrednost iz baze, zaradi tega želim da se mi osvežuje vsakih 10sek.
Sem že poskusil z Thread.Sleep, vendar ne dela vredu.
Mogoče kakšen predlog, če je kdo že kaj podobnega delal.
Hvala za pomoč.
zacetnik11 ::
Ja ni čist tako, ker mi javi napako, da formo že uporablja en proces in ni možno poseganje med procesi.
Vse to sem že poskusil.
Vse to sem že poskusil.
Kekec ::
V bistvu je čisto tako samo prav je potrebno narediti. Malo si poglej kako delujejo thredi in kako poteka komunikacija med njimi.
zacetnik11 ::
Sem pogledal ogromno tutorialov, vendar nisem našel kar bi mi pomagalo.
Ali imaš ti mogoče kakšen primer?
Ali imaš ti mogoče kakšen primer?
Kekec ::
Tole sem na hitro našel med vožnjo :) http://dougzuck.com/c-ui-threading-exam...
če ne druga te bo vsaj usmerilo v pravo smer.
če ne druga te bo vsaj usmerilo v pravo smer.
joze67 ::
Imaš Timer kontrolo, ki je natančno to, kar potrebuješ: na določen interval kliče podprogram, ki mimogrede lahko popravlja vsebino (in več) drugih gradnikov.
Če pa poženeš novo nit, moraš uporabljati Invoke() za sinhronizacijo GUI niti in te druge niti.
Če pa poženeš novo nit, moraš uporabljati Invoke() za sinhronizacijo GUI niti in te druge niti.
win64 ::
Namesto klasičnih niti lahko uporabiš tudi BackgroundWorker. Kar luštna zadeva za preprosta opravila na windows formah.
kod ::
Nekako tako bi moralo delat:
timer = new System.Timers.Timer(1000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
timer.Stop();
update();
timer.Start();
}
void update()
{
if (this.InvokeRequired)
{
this.BeginInvoke((MethodInvoker)delegate
{
update();
});
}
else
{
textBlok.text="blabla";
}
}
timer = new System.Timers.Timer(1000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
timer.Stop();
update();
timer.Start();
}
void update()
{
if (this.InvokeRequired)
{
this.BeginInvoke((MethodInvoker)delegate
{
update();
});
}
else
{
textBlok.text="blabla";
}
}
nightrage ::
Če uporabljaš Thread-e potem si poglej delegate, drugač pa pa lahko vse skupaj implementiraš z backgroundworker-jem, kjer v metodi processchanged updataš gui.
joze67 ::
System.Windows.Forms.Timer sproži event v GUI niti in ni potrebno uporabljati Invoke()- Če govorimo o WinForm programu.
mihies ::
Obstaja še moderen pristop s Taski, tako, na pamet:
Tole metodo poženeš, ko hočeš začeti osveževanje. Deluje pa samo s .net 4.5 in novejšimi.
async Task Osvežuj() { while(true) { await Task.Delay(TimeSpan.FromSeconds(10)); // naredi kar moraš, tole se bo izvedlo v UI niti, če se je while začel v UI niti. } }
Tole metodo poženeš, ko hočeš začeti osveževanje. Deluje pa samo s .net 4.5 in novejšimi.
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [VB] datagridviewOddelek: Programiranje | 1950 (1333) | korenje3 |
» | kako narediti program ki bere drugi programOddelek: Programiranje | 5779 (4092) | imagodei |
» | Vprasanje glede koncepta programa [c#]Oddelek: Programiranje | 2070 (1812) | _Dormage_ |
» | [C#]naključno generiranje okenOddelek: Programiranje | 907 (763) | whatever |
» | [VB] Komunikacija s serijskimi napravamiOddelek: Programiranje | 2314 (1588) | mNeRo |