il miglior modo in C# per interrompere la funzione in mezzo è la parola chiave return
in funzione, ma come faccio a sapere quando usare il return
parola chiave per fermare la funzione in mezzo, dopo che dura almeno 3 secondi? La classe Stopwatch
da System.Diagnostics
è la risposta. Questa complicata funzione che dura da 2 secondi a 5 minuti (a seconda dei dati di input) utilizza logicamente molti cicli e forse anche ricorsione, quindi la mia soluzione per voi è che, al primo codice di linea di quella funzione, create un'istanza di Stopwatch
utilizzando System.Diagnostics
con la parola chiave new
, avviarla richiamando la funzione Start()
della classe cronometro, e, per ciascun ciclo e ciclo, all'inizio, aggiungere il seguente codice:
if (stopwatch.ElapsedMilliseconds >= 3000) {
stopwatch.Stop();
// or
stopwatch.Reset();
return;
}
(suggerimento: è possibile digitare con le mani una volta, copiala Ctrl + C, e poi incollalo semplicemente Ctrl + V). Se tale funzione utilizza la ricorsione, per salvare la memoria, creare l'istanza globale Cronometro anziché crearla inizialmente come istanza locale e avviarla se non è in esecuzione all'inizio del codice. Lo puoi sapere con lo IsRunning
della classe Cronometro. Dopodiché chiedi se il tempo trascorso è superiore a 3 secondi e se si (true
) ferma o resetta il cronometro e usa la parola chiave return
per interrompere il ciclo di ricorsione, ottimo avvio in funzione, se la tua funzione dura molto tempo a causa principalmente della ricorsione più che loop. È così. Come puoi vedere, è molto semplice, e ho provato questa soluzione, e i risultati hanno dimostrato che funziona! Prova tu stesso!
fonte
2013-03-04 18:56:08
possibile duplicato http://stackoverflow.com/questions/5025509/how-to-estimate-method-execution-time – Reniuz
Sì, è un duplicato, il benchmark termina allo stesso modo degli altri fermi del thread. –