Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VB.net THREADING questo sconosciuto: posso usarlo per visualizzare l'ora?

51 views
Skip to first unread message

Wodka40[Google]

unread,
Nov 29, 2010, 8:16:40 AM11/29/10
to
Francamente tutto il namespace per la gestione dei thread mi rimane
parecchio ostico...sopratutto dal punto di vista pratico.

Facciamo un esempio:
devo mostrare data e ora in una statusStrip: metto un timer ed ogni x
secondi aggiorno la visualizzazione.Finita lì!

Però mi sono detto: i pc nuovi sono quasi tutti ALMENO dual core.
Inutile interrompere ogni x secondi l'elaborazione principale per fare
una cosa stupida come visualizzare data e ora.
Perchè non utilizzare un thread solo per visualizzare l'ora? Cosa più
svincolata di questa dal flusso dell'elaborazione non mi riesce
pensarla!

Mi chiedo....se impostassi una classe che nella new (o in un metodo)
va in loop continuo con l'unico scopo di fare un refresh della label
con la data e l'ora...e la lancio all'apertura della form come thread
separato che termino al close della finestra....sto sognando? Non c'ho
capito una mazza del threading? Mi sfarfallera tutto?
....o è fattibile???

Lo faccio per imparare ... è un esempio "didattico"...quindi astenersi
commenti del tipo...usa un timer!

Grazie!

Mauro Servienti [MVP]

unread,
Nov 29, 2010, 8:39:20 AM11/29/10
to
Ciao Wodka40[Google],

You wrote on 29/11/2010 :
> Mi chiedo....se impostassi una classe che nella new (o in un metodo)
> va in loop continuo con l'unico scopo di fare un refresh della label
> con la data e l'ora...e la lancio all'apertura della form come thread
> separato che termino al close della finestra....sto sognando? Non c'ho
> capito una mazza del threading? Mi sfarfallera tutto?
> ....o è fattibile???

usa un timer :-P

Scherzi a parte si è l'approccio giusto, crei una classe, wrappi un
thread, esponi un evento. Okkio la marshaling, perchè da un thread
secondario non puoi accedere ai controlli della UI.

.m

--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @ http://milestone.topics.it
whynot [ at ] topics [ dot ] it


Wodka40[Google]

unread,
Nov 29, 2010, 8:55:08 AM11/29/10
to
On 29 Nov, 14:39, Mauro Servienti [MVP] <mauroservie...@online.nospam>
wrote:
> Ciao Wodka40[Google],
zac
> Scherzi a parte si l'approccio giusto, crei una classe, wrappi un
> thread, esponi un evento. Okkio la marshaling, perch da un thread

> secondario non puoi accedere ai controlli della UI.
argh lo sapevo che era troppo semplice!

e allora come lo "punto" sto benedetto controllo dal 3ad esterno?
non posso spippolare alla "C" andando a leggere il puntatore...che mi
rimane? il timer davvero? che schifo!

in realtà la mia domanda allora diventa......
http://msdn.microsoft.com/it-it/magazine/cc300429(en-us).aspx
devo studiarmi questo vero?
....temo il si come risposta!!!!!!!!

Mauro Servienti [MVP]

unread,
Nov 29, 2010, 9:08:34 AM11/29/10
to
Ciao Wodka40[Google],

You wrote on 29/11/2010 :
> e allora come lo "punto" sto benedetto controllo dal 3ad esterno?
> non posso spippolare alla "C" andando a leggere il puntatore...che mi
> rimane? il timer davvero? che schifo!

il timer è un thread quindi perchè che schifo?

Comunque, per il marshaling:
ISynchronizeInvoke per WIndows Forms
Dispatcher Thread per WPF

> in realtà la mia domanda allora diventa......
> http://msdn.microsoft.com/it-it/magazine/cc300429(en-us).aspx
> devo studiarmi questo vero?
> ....temo il si come risposta!!!!!!!!

ovvio :-P

vbMizio

unread,
Nov 29, 2010, 9:15:51 AM11/29/10
to

Ciao,
....

>e allora come lo "punto" sto benedetto controllo dal 3ad esterno?
....
Non lo fai :-)
Di solito usi il 3ad principale per aggiornare la UI, mentre i secondari per
le varie elaborazioni "pesanti".
Nell'esempio da te fatto, la classe che si occupa di contare il tempo, puo'
alzare un evento verso la form principale per notificargli che deve eseguire
qualche cosa, ad esempio aggiornare la label che mostra l'orario.
Tieni conto che la sub che gestisce l'evento, sta "girando" sul thread
secondario, quindi non puoi accedere al controllo da qui; avrai bisogno di
qualche cosa che si occupa di sincronizzare l'accesso al controllo stesso,
come ad esempio un WindowsFormsSynchronizationContext.
In ogni caso, l'aggiornamento della label sara' compito del thread
principale.

Wodka40[Google]

unread,
Nov 29, 2010, 9:17:11 AM11/29/10
to
zac
> il timer un thread quindi perch che schifo?
zac

OT
...ma perch� google gruppi si perde le accentate?
Anche a cambiar codifica non le vedo!....o con che strana codifica
scrivete?

0 new messages