È chiaro: ad esempio, immagina un pulsante nel mio modulo. Quando l'utente fa clic sul pulsante, alcuni metodi void dovrebbero essere eseguiti dopo 30 secondi.Come eseguire un metodo dopo un intervallo di tempo specifico?
Ci sarebbe un metodo di annullamento "DoAfterDelay" che richiede 2 input, il primo è il metodo da eseguire (utilizzando i delegati) e l'altro è l'intervallo di tempo. Così avrò:
public delegate void IVoidDelegate();
static void DoAfterDelay(IVoidDelegate TheMethod, TimeSpan Interval)
{
// *** Some code that will pause the process for "Interval".
TheMethod();
}
Così ho solo bisogno di un pezzo di codice per mettere in pausa il processo per un intervallo di tempo specifico. Prima d'ora, ho usato questo codice per farlo:
System.Threading.Thread.Sleep(Interval);
Ma questo codice non va bene per me, perché si ferma tutto il processo e si blocca il programma. Non voglio che il programma rimanga bloccato nel metodo "DoAfterDelay". Ecco perché il Thread.Sleep
è inutile.
Quindi qualcuno potrebbe suggerire un modo migliore? Ovviamente l'ho cercato, ma la maggior parte delle soluzioni che ho trovato erano basate su un timer (ad esempio here). Ma usare il timer è la mia ultima opinione, perché il metodo dovrebbe essere eseguito una sola volta e l'uso dei timer rende il programma confuso da leggere. Quindi sto cercando una soluzione migliore se c'è. O forse devo usare i timer?
Credo di dover giocare con i thread, ma non sono sicuro. Quindi mi chiedo se qualcuno potrebbe guidarmi verso una soluzione. Grazie in anticipo.
provare a utilizzare un 'Timer'. – Adrian