Domanda

come posso uccidere un processo dopo due o tre minuti, guarda il seguente codice:

 class Program
{
    static void Main(string[] args)
    {

        try
        {
            //declare new process and name it p1
            Process p1 = Process.Start("iexplore", "http://www.google.com");
            //get starting time of process
            DateTime startingTime = p1.StartTime;
            Console.WriteLine(startingTime);
            //add a minute to startingTime
            DateTime endTime = startingTime.AddMinutes(1); 
            //I don't know how to kill process after certain time
            //code below don't work, How Do I kill this process after a minute or 2
            p1.Kill(startingTime.AddMinutes(2));                
            Console.ReadLine();


        }
        catch (Exception ex)
        {

            Console.WriteLine("Problem with Process:{0}", ex.Message);
        }



    }
}

quindi voglio che la finestra di IE si chiuda dopo 2 minuti

È stato utile?

Soluzione

Usa Process.WaitForExit con un timeout di due minuti, quindi chiama Process .Kill se WaitForExit restituisce false .

(Potresti anche considerare di chiamare CloseMainWindow invece di Kill , a seconda della situazione - o almeno provalo prima, per dare al processo più possibilità di eseguire un arresto ordinato.)

Altri suggerimenti

Usa un System.Threading.Timer e fornisci un TimerCallback (che contiene il tuo process.Kill) per essere richiamato dopo 2 minuti. Vedi l'esempio qui

//p1.Kill(startingTime.AddMinutes(2));
using (var timer = new Timer(delegate { p1.Kill(); }, null, 2000, Timeout.Infinite))
{ 
  Console.ReadLine();  // do whatever
}

Modifica: la soluzione di Jon è più semplice .. meno tipi .. no smaltimento reqd.

Dovresti provare con il servizio Windows invece che con un'applicazione console. I servizi di Windows hanno un ciclo di vita iterativo, quindi questo può essere facilmente ottenuto usando un controllo timer nel servizio di Windows. Lascia che il timer ticchetti ad un intervallo ed esegua l'azione desiderata su determinati intervalli di tempo.

Ovviamente puoi usare il controllo timer anche con un'applicazione console.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top