2010-02-03 33 views
5

Escribí un programa en C# .NET, que debe ejecutarse en segundo plano. Quiero decir que debería tener cualquier interfaz de usuario. Ni una GUI ni una CLI. Tampoco es un windows service (porque debe ejecutarse solo después de que el usuario haya iniciado sesión).Cómo hacer que mi programa sea un proceso en segundo plano

Simplemente debería ejecutarse en segundo plano. ejemplo de tales programas son AdobeUpdater.exe, GoogleUpdater.exe etc.

+3

¿Se da cuenta de que Google Software Updater se ejecuta efectivamente como un servicio de Windows en el contexto de la cuenta del sistema local? Un servicio de Windows configurado para el inicio automático con Credenciales del sistema local es probablemente lo que necesita. – kd7

Respuesta

0

Use el Programador de tareas para ejecutarlo en un cronograma (que puede estar basado en cuando el usuario inicia sesión). O agréguelo al registro para que se ejecute al inicio.

HKLM\Software\Microsoft\Windows\CurrentVersion\Run 
+0

Gracias. Esto es más un consejo que una respuesta a mi consulta. En Visual Studio, mi programa es un proyecto 'Windows Forms/WPF' (GUI) o' CLI'. Ahora, yo tampoco quiero. Debería ejecutarse silenciosamente en segundo plano. – ThinkCentre

5

Otra opción sería la creación de una aplicación de Windows y establezca estas dos propiedades:

 this.WindowState = FormWindowState.Minimized; 
     this.ShowInTaskbar = false; 
+0

Bueno, no creo que esta sea una buena solución porque, esto hace que se cree y se muestre la primera forma, entonces estas acciones se ejecutarán. Lo que hace que GUI aparezca al menos por un instante. Que quiero evitar – ThinkCentre

+0

@ThinkCentre: Intente configurar la propiedad Visibilidad de formularios en falso en el momento del diseño. Una aplicación con un formulario "oculto" es su única opción si no desea escribirla como un servicio de Windows, así que trabaje para que esto funcione para usted. –

+0

@BFree: +1 Por cierto :) –

5

puede crear una aplicación de consola, y luego cambiar sus propiedades en la configuración del proyecto a una aplicación de Windows (en lugar de consola). O puede crear una aplicación de Windows Forms que no cree ningún formulario.

2

A menudo utilizo la siguiente solución para este caso: cree un contexto de aplicación y utilícelo en el proyecto de WinForm en lugar de en un formulario.

  1. Crear una clase Application Context

    public class MyApplicationContext : ApplicationContext 
    { 
         public MyApplicationContext() 
         { 
         } 
    
         void Exit(object sender, EventArgs e) 
         { 
           Application.Exit(); 
         } 
    } 
    
  2. En Program.cs -> reemplazar Application.Run originales() llamar

    static void Main() 
    { 
        Application.EnableVisualStyles(); 
        Application.SetCompatibleTextRenderingDefault(false); 
    
        Form1 frm = new Form1(); //remove if not needed 
        Application.Run(new MyApplicationContext()); 
    } 
    
  3. Debido a que no se presenta la forma más , debe proporcionar otras formas de cerrar la aplicación. Es decir. Uso de la bandeja del sistema y luego llamar:

    Application.Exit(); 
    

Nota: El uso de lo anterior (y sin tener que mostrar la forma), nunca obtendrá los eventos de formulario habituales como de carga, cierre, cerrado.

Cuestiones relacionadas