12/09/12 14:08
ivan_j_147
Ciao a tutti,
chiedo subito scusa se la mia domanda è banale, ma ho qualche problema nell'"attivare" un evento.
Mi spiego meglio.
Sto sviluppando un programma che nel suo thread principale permetta di leggere via porta seriale dei dati da un dispositivo elettronico. Nel frattempo però avrei bisogno di monitorare lo stato di carica della batteria dello stesso dispositivo.
Mi piacerebbe quindi "piazzare" la seconda parte in un thread a parte (creato con un threading.timer), che operi in modo totalmente indipendente e distaccato dal thread principale.
Ovviamente però, se nel secondo thread rilevo che la batteria è scarica, ho bisogno di mostrarlo all'utente, magari scrivendolo in una label creata nel thread principale.
Ora so che questa cosa potrei gestirla con un'istruzione
Ad esempio, se il codice del secondo thread fa una cosa di questo tipo:
io vorrei che il thread principale generasse un evento non appena batteriaScarica diventa True, e da lì quindi gestire la situazione come preferisco, senza fare nessuna chiamata cross-thread.
E' una cosa possibile? Scusate se magari mi sono spiegato in modo poco comprensibile...
chiedo subito scusa se la mia domanda è banale, ma ho qualche problema nell'"attivare" un evento.
Mi spiego meglio.
Sto sviluppando un programma che nel suo thread principale permetta di leggere via porta seriale dei dati da un dispositivo elettronico. Nel frattempo però avrei bisogno di monitorare lo stato di carica della batteria dello stesso dispositivo.
Mi piacerebbe quindi "piazzare" la seconda parte in un thread a parte (creato con un threading.timer), che operi in modo totalmente indipendente e distaccato dal thread principale.
Ovviamente però, se nel secondo thread rilevo che la batteria è scarica, ho bisogno di mostrarlo all'utente, magari scrivendolo in una label creata nel thread principale.
Ora so che questa cosa potrei gestirla con un'istruzione
Invoke, ma vorrei evitarlo. Vorrei anzi fare in modo di implementare una sorta di EventListener.
Ad esempio, se il codice del secondo thread fa una cosa di questo tipo:
private sub checkBatteria dim batteriaScarica as boolean batteriaScarica=fcn_rileva_stato_batteria()
io vorrei che il thread principale generasse un evento non appena batteriaScarica diventa True, e da lì quindi gestire la situazione come preferisco, senza fare nessuna chiamata cross-thread.
E' una cosa possibile? Scusate se magari mi sono spiegato in modo poco comprensibile...
aaa