2016-07-14 4 views
0

タスクマネージャがタスクの開始/終了をどのように読み取ることができるかを知りたいと思っていました。私が思ったのは、新しいタスクが開始されたかどうか、タスクマネージャー内の特定の文字列を検索するかどうかを常にチェックするループがあるということです。これは可能ですが、私は実際に多くのパフォーマンスを "食べる"ので、私は実際にその方法を使用したくはありませんでした。私は思っていました。あなたが確認する方法があれば、シャットダウン。これが私の考え方です:タスクが起動/シャットダウンするときの確認

while(!"notepad.exe found") 
    { 
     SearchForTask("notepad.exe"); 
     if(notepad.exe found) 
     //Do Something 
    } 

別の方法がある場合は、私に教えてください。実行中のプロセスのチェックよろしく

答えて

0

は簡単です:あなたはまた、ゼロよりも大きいLengthを確認したり、ランニングの量を格納しますがチェック最後の時間を処理し、かどうかを確認することができます

if(Process.GetProcessesByName("notepad").Length == 0) 
{ 
    // "notepad" not running 
} else { 
    // At least one "notepad" process is running 
} 

実際には複数の「メモ帳」を実行できるので、(最後の金額よりも少ない場合は、プロセスのうちの1つが終了していれば、より多くのプロセスが開始されます。

"フレンドリーネーム"(一般的にはexeまたはパスのない実行可能ファイル名)を使用しています。非常に特定のパスを持つ非常に特定のプロセスに興味がある場合は、 GetProcessesByNameが返されます。

これをループで実行している場合は、ループに自由時間を置いて、常にチェックしていないようにしてください(これは、このすべてで何をしているかによって異なります)。そうでなければ、タイマー(利用可能なものの1つ)を使用し、「n」ミリ秒ごとにポーリングを行います。

+0

しかし、それはあなたがちょうどそこに投稿したものが一度だけチェックされているので、もう一度 "while"を使用するように強制しませんか?私が間違っている?私は、ループを使用したくないと思います。なぜなら、それは大量のメモリを必要とするからです。 – DaiSuki53

+0

ループはメモリを使用せず、CPUを使用します。必要に応じてタイマーを使用するか、タスクを使用してループ内に遅延を追加してCPUを解放することができます。あなたが好むもの – Jcl

+0

間違った言葉を使って申し訳ありませんが、私はあまり経験がありません。私はタイマーに行くと思う。コンピューターを「殺した」時は何時ですか。私が10秒ごとにプロセスを検索した場合、10秒ごとに小さなラグスパイクがありますか、それほど気にならない小さな機能ですか? – DaiSuki53

関連する問題