У меня есть основное приложение, вызывающее другое консольное приложение через компонент Process. Я установил ограничение памяти в консольном приложении, используя настраиваемую реализацию объектов Job (имя класса в коде - «Job»)
При превышении лимита памяти возникает исключение OutofMemory или происходит сбой KERNELBASE.DLL,Но я не могу отловить это исключение в основном приложении или в консольном приложении.
Как это исправить?
Не удалось обработать глобальное исключение в консольном приложении.
Основное приложение имеет следующий код
private void startProcess()
{
try
{
Process proc = new Process();
proc.StartInfo.FileName = @"E:\App\console.exe";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.OutputDataReceived += Proc_OutputDataReceived;
proc.ErrorDataReceived += Proc_ErrorDataReceived;
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
Job job = new Job(_maxmemory);//memory limit set for child process
job.AddProcess(proc.Id);//for the above console
proc.WaitForExit();//this is called on a thread.
}
catch (Exception ex)
{
}
}
Консольное приложение имеет следующий код
static void Main(string[] args)
{
System.AppDomain.CurrentDomain.UnhandledException += CatchUnhandledException;
}
static void CatchUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Console.Error.WriteLine(e.ExceptionObject.ToString());
}
Как обработать это исключение ограничения памяти в основном приложении или на консоли?