0
メインタスクを実行する前に別の実行可能ファイル(実行に約30分かかります)を呼び出すプロセスがあります。顧客がプログラムがハングアップしていると思うようにならないように、またデバッグの目的で、この別々のプロセスのメモリカウンタを500msごとに更新する別のスレッドを追加しました。メモリカウンタのスレッドが動作しない
何らかの理由で、実行ファイルのメモリ使用量が(100MiB - > 500MiBの)実行中に一貫して増加しているにもかかわらず、更新されていないようです。
ループが確実に実行されていることを確認しましたが、メモリカウンタを更新できません(このマシンに必要な.exeがないため、ターゲットマシンにVSをインストールしないでください)。ここで
はコードの関連セクションあり、どのような援助をいただければ幸いです。
public static void Main()
{
try
{
Console.WindowWidth = 100;
}
catch
{
// ignored
}
ProcessStartInfo generateReport = new ProcessStartInfo
{
Arguments =
"/H /EH ReliabilityMontroseLOS /T D:\\InformerReports\\Archive\\ReliabilityData\\ICSSReport.csv",
CreateNoWindow = true,
FileName = @"C:\Invensys\Aim\AimInform\Inform.exe",
UseShellExecute = true
};
Thread thread = new Thread(() => StartReportThread(generateReport));
thread.Start();
int x = 35;
int direction = 1;
Console.ForegroundColor = ConsoleColor.Green;
while (thread.IsAlive)
{
string line = "";
for (int j = 0; j < x; j++)
{
line += " ";
}
line += "Collecting Data";
string line2 = string.Format("AIM*Inform Memory Usage: {0} MiB", workingSet/Math.Pow(1024,2));
Console.Clear();
Console.WriteLine(line);
Console.WriteLine(line2);
x += direction;
if ((x == 80) || (x == 0))
{
direction = -direction;
}
Thread.Sleep(500);
}
//Everything else
と
private static void StartReportThread(ProcessStartInfo generateReport)
{
Process proc = Process.Start(generateReport);
while ((proc != null) && !proc.HasExited)
{
workingSet = proc.WorkingSet64;
Thread.Sleep(100);
}
}