Attualmente sto utilizzando System.Threading.Timer su un intervallo di 10 secondi. Ho aggiunto una piccola porzione di codice per scrivere su un file ogni volta che scatta il timer, e mentre la maggior parte delle volte si accende in orario, a volte (presumibilmente quando il resto dell'app è acquistato), non riesce a sparare per 30 o 40 secondi e scatta più e più volte in rapida successione.Timer più affidabile di System.Threading.Timer
È possibile utilizzare un timer più affidabile in .NET 3.5?
Il timer è configurato come segue
Timer someTimer = new Timer(new TimerCallback(SomeMethod), null, 0, 10000);
... e il callback è:
private static void SomeMethod(object state)
Tuttavia, è difficile fornire molto più codice di questo, come il Timer di solito spara correttamente . Quando è incorporato in una massiccia applicazione (~ 100.000 linee o giù di lì), con più thread sparati fuori, a sinistra, a destra e al centro, si inizia lentamente a vedere il timer che si attiva ininterrottamente. Ho visto diversi post che suggeriscono che il ThreadPool potrebbe essere esaurito, quindi attualmente sto cercando di capire se questo potrebbe essere ciò che sto vivendo.
È possibile fornire un codice di esempio anziché * assumendo * il timer non è affidabile? Tendo a scoprire che è il mio codice a rappresentare il problema e non i .NET Framework ". –
Il timer è impostato come segue: – JamesPD
Se il tempo di elaborazione del segno di spunta richiede più di 10 secondi, molto probabilmente si verificherà la fame di threadPool. Otterrai lentamente un arretrato di articoli. La tattica standard consiste nel fermare il timer all'ingresso di un evento tick e ricominciare da capo alla fine per non avere "leak timer" a causa dei lunghi tempi di elaborazione. –