using System;
using System.Diagnostics;
using System.Threading;
namespace Receta.CSharp.R0416
{
public sealed class TerminacionBlocNotas
{
public static void Main()
{
Console.Title = "--- Terminación de Instancia de Bloc de Notas ---";
Console.WriteLine ();
// Creación de proceso para ejecución de Bloc de notas:
using (Process proceso = Process.Start ("notepad.exe", @"C:\shared\ArchivoTextoPlano.txt"))
{
// Tiempo de espera de terminación de Bloc de notas de 5 segundos:
Console.WriteLine ("Espera de 5 segundos antes de terminar el Bloc de notas.\n");
Thread.Sleep (5000);
// Terminar el proceso:
Console.WriteLine ("Terminación del Bloc de notas con el método `CloseMainWindow`.");
// Envía señal de terminación con `CloseMainWindow`:
if (!proceso.CloseMainWindow())
{
// En caso de realizarse la terminación con `CloseMainWindow`, se invoca al
// método `Kill`:
Console.WriteLine ("Terminación del Bloc de notas con el método `Kill`.");
proceso.Kill();
}
else
{
// La terminación de la aplicación fue corresta; sin embargo esperamos 2
// segundos para confirmar la terminación antes de recurrir
// a la invocación del método `Kill`:
if (!proceso.WaitForExit (2000))
{
Console.WriteLine ("El método `CloseMainWindow` falló la terminación del " +
"Bloc de notas. La terminación se realizará con `Kill`."
);
proceso.Kill();
}
}
}
Console.WriteLine ();
}
}
}