2014年7月3日木曜日

プロセス終了検知

プロセスが終了するまで次の処理を行わない


using System.Diagnostics;

class Project
{
    //メイン
    public static void Main(string[] args)
    {
        //プロセスが終了するまで次のプロセスを行わない
        string processName = "notepad";

        if (IsStopedProcess(processName))
        {
            System.Diagnostics.Debug.WriteLine("notepad終了");
        }
    }

    /// 
    /// プロセス終了検知
    /// プロセスが終了するまでループし続ける
    /// 
    ///     /// 
    public static bool IsStopedProcess(string processName)
    {
        foreach (var process in Process.GetProcessesByName(processName))
        {
            //プロセスが終了したらTrue
            while (!process.HasExited)
            {
                System.Threading.Thread.Sleep(1000);
            }
        }
        return true;
    }
}


プロセスが終了するまで待つ

この場合メモ帳が閉じられるまで無限ループし続ける
プロセスがなければProcess.GetProcessesByNameで拾えず抜けるし、拾えたらHasExitedでプロセスが閉じるまで監視し続ける

このプロセスが終わってから次の処理へ、としたい場合に使う

0 件のコメント:

コメントを投稿