コード例 #1
0
        public static void Main(string[] args)
        {
            Console.WriteLine(Archivos.Inicio);
            while (true)
            {
                var cantidad = UtilConsola.LeerIntConDefault(10, Archivos.str_cuantos_trabajos, 0, 100);
                if (cantidad == 0)
                {
                    return;
                }

                var iteraciones = UtilConsola.LeerIntConDefault(10, Archivos.str_cuantas_iteraciones, 1, 100);
                var peso        = UtilConsola.LeerIntConDefault(500, Archivos.str_cuanto_peso, 1, 5000);

                var trabajos              = Util.GenerarTrabajos(cantidad, peso, iteraciones);
                var rutaArchivo           = Path.Combine(Environment.CurrentDirectory, "log.txt");
                var log                   = new Logger(rutaArchivo);
                Action <Trabajo> miAccion = t => {
                    for (int i = 0; i < t.Cantidad; i++)
                    {
                        log.Log(LoggerTask.Tipo.Informacion, string.Format("Trabajo {0} paso {1} inicia", t.Id, i));
                        Thread.Sleep(t.Peso);
                        log.Log(LoggerTask.Tipo.Informacion, string.Format("Trabajo {0} paso {1} termina", t.Id, i));
                    }
                };

                var tareas = (from trabajo in trabajos select Task.Run(() => miAccion(trabajo))).ToArray();

                // esperar finalización de tareas
                Task.WaitAll(tareas);
                UtilConsola.Escribir(Archivos.str_trabajos_terminados, ConsoleColor.Green);
                var abrir = UtilConsola.LeerString("¿Desea abrir el archivo? (s/n)");
                if (abrir.Equals("s", StringComparison.OrdinalIgnoreCase))
                {
                    Process.Start("notepad.exe", rutaArchivo);
                }
                //Console.ReadKey(true);
            }
        }