方法 : Process コンポーネントのプロパティを更新する
更新 : 2007 年 11 月
Process コンポーネントのプロパティは、キャッシュに格納されています。このプロパティを使用して、コンポーネントが連結されているプロセスのプロパティ値を格納できます。
このプロパティが格納されるのは、プロセスに対するプロパティ要求を最初に実行したときです。このとき、コンポーネントは、連結されているプロセスのプロパティ値をキャッシュされているプロパティに格納します。それ以降にプロパティ値の要求が実行されても、コンポーネントはこの情報を更新しません。
現在のプロパティ値を表示するには、プロセスのプロパティ値を要求する前に、Process コンポーネントの Refresh メソッドを呼び出す必要があります。Refresh メソッドを呼び出すと、コンポーネントのプロパティの値が、目的のプロセスのプロパティの現在のデータに置き換えられます。
Process コンポーネントのプロパティを更新するには
プロセスのインスタンスをプログラムで作成するか、デザイン ビューで Process コンポーネントをプロジェクトに追加することによって作成します。詳細については、「方法 : 既存のプロセスにバインドする」を参照してください。
プロパティ情報を取得する前にプロセスのプロパティが変更されている場合は、Refresh メソッドを呼び出します。
適切なプロセス情報を読み取るようにプロパティを設定し、返された値を変数に割り当てます。
次の例では、メモ帳のインスタンスを開いてから、Refresh メソッドを呼び出してコンポーネントのプロパティを更新しています。その後で、コードはコンポーネントの更新された WorkingSet64 プロパティを読み取り、関連するプロセスに割り当てられているメモリ容量を返します。更新されたプロパティの値は、2 秒間隔で 6 回コンソールに書き込まれます。コンソールは、プロシージャの完了後 5 秒間表示されます。
Dim Notepad As New Process() Dim i As Integer Notepad = Process.Start("Notepad.exe") For i = 0 To 5 ' Forces the Process component to get a new set of property values. Notepad.Refresh() ' Writes the property value to the console screen. Console.WriteLine(Notepad.WorkingSet64) ' Waits two seconds before running the next loop. System.Threading.Thread.Sleep(2000) Next ' Closes Notepad and waits 5 seconds before closing the console screen. Notepad.CloseMainWindow() System.Threading.Thread.Sleep(5000)
Process notepad; notepad = Process.Start("Notepad"); for (int i = 0; i < 5; i++) { // Forces the Process component to get a new set // of property values. notepad.Refresh(); // Writes the property value to the console screen. Console.WriteLine(notepad.WorkingSet64.ToString()); // Waits two seconds before running the next loop. System.Threading.Thread.Sleep(2000); } // Closes Notepad and waits 5 seconds before closing // the console screen. notepad.CloseMainWindow(); System.Threading.Thread.Sleep(5000);