none
¿Como iniciar un programa en una fecha determinada y esto configurarlo en el mismo programa con c#? RRS feed

  • Pregunta

  • Desarrolle una aplicación en c# para el trabajo y como requerimiento necesito configurarla para que se inicie en una fecha determinada, esto debo poder establecerlo en un formulario ingresando la fecha y día (en la misma aplicación), osea no debe estar en ejecución para que la instrucción se lanze...
    lunes, 7 de enero de 2019 15:06

Respuestas

  • Gracias por responder, quizás puedas ayudarme un poco más. Implementé lo de la librería TaskScheduler pero aún así no se enciende cuando lo establezco y lanza el siguiente error "No se puede cargar el archivo o ensamblado 'TaskScheduler, Version=1.3.2889.25680. Culture=neutral, PublicKey Token=null' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado."...

    Tengo el siguiente código:

                string Dia = comboBox2.SelectedItem.ToString();
                short hra = Convert.ToInt16(textBox4.Text);
                short min = Convert.ToInt16(textBox3.Text);


                using (ScheduledTasks Tareas = new ScheduledTasks())

                {
                    Task tarea = Tareas.CreateTask("Ejecutar secador de botas");
              
                    tarea.ApplicationName = @"C:\Program Files (x86)\Fishken SB\SecadorDeBotas           \SecadorBotas.exe";

                    tarea.Comment = "Tarea que ejecuta programa secador de botas";            

                    tarea.Creator = "USER";

                    tarea.Priority = System.Diagnostics.ProcessPriorityClass.Normal;

                    switch (Dia)
                    {
                        case "Lunes":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Monday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Martes":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Tuesday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Miercoles":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Wednesday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;

                        case "Jueves":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Thursday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Viernes":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Friday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Sabado":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Saturday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Domingo":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Sunday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                    }

                }


    lunes, 7 de enero de 2019 18:00

Todas las respuestas

  • El programa no se puede lanzar en una fecha determinada a no ser que haya algo que ya esté rodando en esa fecha y que sea lo que lance el programa.

    Tienes que decidir qué es lo que va a ser ese "algo". Podría ser el propio programa, que normalmente se ejecute de forma oculta y al llegar esa fecha haga visible un formulario. Esto podrías conseguirlo poniendo el programa dentro de la clave del registro que hace que se ejecute cada vez que un usuario hace "login". En el "main" metes un timer o un bucle con una pausa para que periodicamente compruebe si ha llegado la fecha deseada, y cuando se alcance entonces ejecutas el resto del "main", que es la parte que abre el formulario.

    Si no te vale que sea el propio programa, puedes usar para ello otro programa (que puede ser diminuto), y que lance tu programa "grande" mediante Process.Start. Pero no puedes hacer que tu programa se inicie "solo" sin que haya ninguna otra cosa que lo lance.

    Si no necesitas que el programa interactúe con la pantalla, puedes lanzarlo desde un Servicio. Y ya existe un servicio que vale para eso, se llama "Windows Scheduler". Pero si necesitas que abra una ventana en pantalla, y quieres hacerlo en un Windows "moderno" (no un XP ni nada por el estilo), entonces tiene que rodar en la sesión del usuario, no puede ser un servicio.

    lunes, 7 de enero de 2019 15:46
  • hola

    >>como requerimiento necesito configurarla para que se inicie en una fecha determinada

    desde codigo c# podrias crear una Task en Windows para que realice una accion

    TaskScheduler

    puedes ayudarte con librerias como las del link para crear la accion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 7 de enero de 2019 16:45
  • Gracias por responder, quizás puedas ayudarme un poco más. Implementé lo de la librería TaskScheduler pero aún así no se enciende cuando lo establezco y lanza el siguiente error "No se puede cargar el archivo o ensamblado 'TaskScheduler, Version=1.3.2889.25680. Culture=neutral, PublicKey Token=null' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado."...

    Tengo el siguiente código:

                string Dia = comboBox2.SelectedItem.ToString();
                short hra = Convert.ToInt16(textBox4.Text);
                short min = Convert.ToInt16(textBox3.Text);


                using (ScheduledTasks Tareas = new ScheduledTasks())

                {
                    Task tarea = Tareas.CreateTask("Ejecutar secador de botas");
              
                    tarea.ApplicationName = @"C:\Program Files (x86)\Fishken SB\SecadorDeBotas           \SecadorBotas.exe";

                    tarea.Comment = "Tarea que ejecuta programa secador de botas";            

                    tarea.Creator = "USER";

                    tarea.Priority = System.Diagnostics.ProcessPriorityClass.Normal;

                    switch (Dia)
                    {
                        case "Lunes":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Monday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Martes":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Tuesday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Miercoles":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Wednesday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;

                        case "Jueves":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Thursday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Viernes":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Friday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Sabado":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Saturday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                        case "Domingo":

                            tarea.Triggers.Add(new WeeklyTrigger(hra, min, DaysOfTheWeek.Sunday));

                            tarea.Save();

                            MessageBox.Show("Configuración guardada!!");

                            break;
                    }

                }


    lunes, 7 de enero de 2019 18:00