質問

次のコードを2、3分見てからプロセスを強制終了する方法:

 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);
        }



    }
}

だから、2分後にIEウィンドウを閉じたい

役に立ちましたか?

解決

Process.WaitForExit を使用する2分のタイムアウト、そして Processを呼び出します。 WaitForExit false を返した場合、.Kill

の呼び出しを検討することもできます。状況に応じて、 Kill の代わりにCloseMainWindow を使用します-または、少なくとも最初に試して、プロセスに正常なシャットダウンを行う機会を与えます。)

他のヒント

System.Threading.Timerを使用し、TimerCallback(process.Killを含む)を指定して、2分後にコールバックします。 こちらの例

を参照してください。
//p1.Kill(startingTime.AddMinutes(2));
using (var timer = new Timer(delegate { p1.Kill(); }, null, 2000, Timeout.Infinite))
{ 
  Console.ReadLine();  // do whatever
}

編集:Jonのソリューションはよりシンプルです..より少ないタイプ..廃棄要求なし。

コンソールアプリケーションではなく、Windowsサービスを試してください。 Windowsサービスにはライフサイクルが繰り返されるため、Windowsサービスのタイマーコントロールを使用してこれを簡単に実現できます。一定間隔でタイマーを刻み、特定の時間間隔で目的のアクションを実行します。

もちろん、コンソールアプリケーションでもタイマーコントロールを使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top