I have the following piece of code which creates a process, attaches to a job object and in finally block, disposes the job object and then the process. I still encounter CA2000:DisposeObjectsBeforeLosingScope code analysis error. Any ideas how I can get rid of this Code Analysis error?
Process process = null;
JobObject processGroupLimitJobMemory = null;
try
{
// Code to create process,
// initialize job object and attach process to job object
// Code to create process and attach to job object
processGroupLimitJobMemory = new JobObject();
var process = new Process();
process.StartInfo = new ProcessStartInfo()
{
WorkingDirectory = @"c:\Windows\System32",
FileName = "notepad.exe",
Arguments = null,
UseShellExecute = false
};
process.Start();
processGroupLimitJobMemory.AttachProcess(process);
return;
}
catch (InvalidOperationException e)
{
return;
}
finally
{
if(processGroupLimitJobMemory != null)
{
processGroupLimitJobMemory.Dispose();
}
if (process != null)
{
try
{
if (!process.HasExited)
{
Utilities.KillProcessTree(process);
}
}
catch (InvalidOperationException e)
{
// Trace
}
catch (ExternalException e)
{
// Trace
}
finally
{
process.Dispose();
}
}