6

Ecco il mio codice ..Start/Stop DispatcherTimer da un thread diverso

public DispatcherTimer tmr = new DispatcherTimer(); 

void somefunction (parameters){ 

if (something) 
    tmr.Start(); 
if (something else) 
    tmr.Stop(); 

    } 

Il mio problema è che non posso accedere ai metodi Start/Stop dell'oggetto TMR dalla seconda funzione dal momento che gira su un filo diverso !!!

Qualcuno può aiutarmi? Sono colpito da questo problema per quasi 3 giorni! :(

risposta

2

È necessario Invoke tramite Dispatcher (per il marshalling la chiamata da un altro thread) in questo modo

Deployment.Current.Dispatcher.BeginInvoke((Action)(()=>timer.Start()) 
+0

grazie hasan..but dal momento che "TMR" è già un oggetto DispatcherTimer, non ha un Metodo di invio in esso! Ciò avrebbe funzionato se tmr fosse solo un oggetto timer, ma non è .. :( – Gowtham

+0

@Gowtham prova la risposta aggiornata –

+0

ancora non funziona. L'errore che ottengo è .. System.Windows.Threading .Dispatcher 'non contiene una definizione per' Invoke 'e non è possibile trovare alcun metodo di estensione' Invoke 'che accetta un primo argomento di tipo' System.Windows.Threading.Dispatcher '(ti manca una direttiva using o un riferimento all'assembly?) – Gowtham