いつもお世話になっております。
コンソールの結果にCPU使用率、物理メモリ、仮想メモリ使用量を1分毎に表示して24時間の履歴を残したいと考えています。このプログラムをタスクスケジューラで1日1回決まった時間に動くようにして毎日の履歴としてファイルを残したいのですが、基本的なことかもしれませんがコンソールへの出力は確認できたので24時間分のコンソールの結果をテキストファイルなどに出力(ファイル名を処理を開始した日付.txt)したいのですがC#を勉強し始めて日が浅く検索して調べても分からないです。
C#に詳しい方、どうかご教授お願い致します。
また、コードに誤りがある場合やこういう風にすると良いなどある場合は、ご指摘、修正も宜しくお願い致します。
説明が長くなり分かりにくい部分があると思いますが、
実現したいこととしては
・コンソールの結果をテキストファイルに出力(ファイル名→処理を開始した日付.txt)
または処理しながらテキストファイルに追加することは可能なのか。
・コードの添削、修正のお願い
です。
宜しくお願い致します。
using System; using System.Threading; using System.Diagnostics; using System.IO; namespace CodeRecipe_Timer_CS { class Program { static void Main(string[] args) { using (PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time", "_Total", true)) { TimerCallback tDelegate = new TimerCallback(GetCpuUsage); using (Timer oTimer = new Timer(tDelegate, pc, 0, 60000)) //1分毎に { Thread.Sleep(86400000); //24時間後終了 } } Console.WriteLine("Timer を停止しました。終了するには何かキーを押してください。"); Console.Read(); } static void GetCpuUsage(object state) { PerformanceCounter pc = state as PerformanceCounter; DateTime dtNow = DateTime.Now; System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess(); p.Refresh(); if (pc != null) { Console.WriteLine(String.Format("現在のCPU使用率は {0:f}% です。" + dtNow.ToString(), pc.NextValue())); Console.WriteLine("物理メモリ使用量: {0}", p.WorkingSet64); Console.WriteLine("仮想メモリ使用量: {0}", p.VirtualMemorySize64); } } } }
追記:コンソールの出力結果としては以下のように1分毎に表示されます。プログラム動かし始めは0%で問題ありません。このままテキストファイルに出力できると助かります。
現在のCPU使用率は 0.00% です。2019/04/10 15:58:22
物理メモリ使用量: 25051136
仮想メモリ使用量: 143544320
現在のCPU使用率は 62.10% です。2019/04/10 15:59:22
物理メモリ使用量: 25653248
仮想メモリ使用量: 143675392
回答1件
あなたの回答
tips
プレビュー