¿Cómo puedo ejecutar código después de que comience mi formulario?

Soy realmente nuevo en la progtwigción de Windows Forms y no estoy seguro de cuál es la forma correcta de progtwigr.

Esta es mi confusión.

Tengo una sola forma:

public partial class ReconcilerConsoleWindow : Form { public ReconcilerConsoleWindow() { InitializeComponent(); SetLogText("Started"); } public void SetLogText(String text) { string logInfo = DateTime.Now.TimeOfDay.ToString() + ": " + text + Environment.NewLine; tbx_Log.AppendText(logInfo); } } 

Y en mi clase Program.cs tengo el siguiente código:

  static class Program { ///  /// The main entry point for the application. ///  [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); ReconcilerConsoleWindow window = new ReconcilerConsoleWindow(); Application.Run(window); if (CallSomeMethod() == true) { window.SetLogText("True"); } } } 

Ahora, una vez que la ventana ha sido mostrada por el comando Application.Run, el progtwig se detiene en ese punto. ¿Cómo puedo seguir procesando mientras la ventana está abierta?

Lo anterior es solo un ejemplo. Mi propósito es leer un archivo XMl y mostrar una vista de datos. Posteriormente, observo el archivo XMl en busca de cambios y cada vez que se realiza un cambio, quiero actualizar la vista de datos. Sin embargo, una vez que aparece la consola, ¿cómo puedo continuar con mi progtwig y hacer cambios en la información que se muestra en el formulario sobre la marcha?

El procesamiento que se produce después de Application.Run generalmente se activa en el controlador de eventos de Load del formulario. Puede crear fácilmente un método de Load en Visual Studio haciendo doble clic en cualquier espacio abierto en el formulario.

Esto se vería algo así.

  private void ReconcilerConsoleWindow_Load(object sender, EventArgs e) { if (CallSomeMethod()) { this.SetLogText("True"); } } 

La razón por la que esto es (como se indica en varias otras respuestas) es que el hilo principal (el que se llamó Application.Run(window) ) ahora se ocupa de la operación de la bomba de mensajes para el formulario. Puede continuar ejecutando cosas en ese hilo a través de mensajes, usando los eventos de formularios o formularios. O puedes comenzar un nuevo hilo. Esto podría hacerse en el método principal, antes de llamar a Application.Run(window) , pero la mayoría de las personas lo harían en Form_Load o en el constructor de formularios, para garantizar que el formulario esté configurado, etc. Una vez que Application.Run regrese, todos los formularios ahora están cerrados.

Application.Run inicia el ciclo de manejo de eventos de Windows. Ese bucle no terminará hasta que tu formulario se cierre, en cuyo momento todo lo que hagas será importante de todos modos.

Si desea hacer algo con su formulario, hágalo en el controlador del evento Load del formulario.

Program.cs no está diseñado para tener reglas de negocios, solo debe llamar a su formulario y mostrarlo. Toda la carga / actualización / edición de la red de datos debe realizarse en sus Formularios. Debe utilizar los eventos definidos en la clase Forms, como: OnLoad, OnUnload, OnClose y muchos otros, etc.

Te estás perdiendo el concepto. En una aplicación de Windows Forms, su hilo principal es responsable de ejecutar el formulario.

Siempre puede usar más subprocesos, pero en Windows Forms recomendaría usar un componente BackgroundWorker para tareas paralelas: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

O un temporizador: http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx

Una vez que se llama Application.Run (ventana), querrá manejar las siguientes cosas dentro de la propia ventana de la aplicación.

En la vista de código del formulario, busque lo siguiente (o agréguelo)

 private void ReconcilerConsoleWindow_Load(object sender, EventArgs e) { //this is where you do things :) if (CallSomeMethod() == true) { window.SetLogText("True"); } }