la mejor manera en C# para detener la función en medio es la palabra clave return
en función, pero ¿cómo sé cuándo usar el return
palabra clave para detener la función en el medio, después de que dura al menos 3 segundos? La respuesta es la clase Stopwatch
de System.Diagnostics
. Esta función complicada que dura entre 2 segundos y 5 minutos (dependiendo de los datos de entrada) lógicamente utiliza muchos bucles, y tal vez incluso recursión, por lo que mi solución para usted es que, en el primer código de línea de esa función, cree una instancia de Stopwatch
utilizando System.Diagnostics
con la palabra clave new
, iniciarlo llamando a la función Start()
de la clase cronómetro, y en cada bucle y bucle, al principio, añada el siguiente código:
if (stopwatch.ElapsedMilliseconds >= 3000) {
stopwatch.Stop();
// or
stopwatch.Reset();
return;
}
(consejo: puede escribirla con las manos una vez, cópielo Ctrl + C, y luego simplemente péguelo Ctrl + V). Si esa función utiliza recursividad, para ahorrar memoria, cree la instancia global de cronómetro en lugar de crearla como instancia local al principio, e iníciela si no se ejecuta al principio del código. Puede saberlo con el IsRunning
de la clase Cronómetro. Después de eso, pregunte si el tiempo transcurrido es más de 3 segundos, y si es así (true
) detenga o reinicie el cronómetro y use la palabra clave return
para detener el ciclo de recursión, muy buen inicio en la función, si su función dura mucho tiempo debido principalmente a recursión más que bucles. Que es. Como puede ver, es muy simple, y probé esta solución, ¡y los resultados mostraron que funciona! ¡Inténtalo tú mismo!
posible duplicado http://stackoverflow.com/questions/5025509/how-to-estimate-method-execution-time – Reniuz
Sí, es duplicado, la evaluación comparativa finaliza de la misma manera que cualquier otro hilo. –