public static void Main(string[] args) { string filepath = Path.Combine(typeof(TestProgramMemoryUsage.Program).Assembly.Location); var process1 = Process.Start(filepath); var process2 = Process.Start(filepath); var security = new JobObjectSecurity(true); security.AddAccessRule(new NTAccount("Everyone"), JobObjectAccessRights.AllAccess, AccessControlType.Allow); using (var job = JobObjectHandle.Create(security, "Foobar")) { var extendedLimitInformation = new ExtendedLimitInformation { KillOnJobClose = true, JobMemoryLimit = 3 * 1024 * 1024 * 1024UL, ProcessMemoryLimit = 100 * 1024 * 1024, }; job.SetInformation(extendedLimitInformation); job.AssignProcess(process1); using (var job2 = JobObjectHandle.Open("Foobar")) { job2.AssignProcess(process2); var extendedLimitInformation2 = job2.GetInformation <ExtendedLimitInformation>(); var basicAccountingInformation = job2.GetInformation <BasicAndIoAccountingInformation>(); var basicUiRestrictions = job2.GetInformation <BasicUiRestrictions>(); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(intercept: true); } }
public IJobObject Open(string name, bool inheritHandle = false, JobObjectAccessRights desiredAccess = JobObjectAccessRights.AllAccess) { var handle = JobObjectHandle.Open(name, inheritHandle, desiredAccess); return(new JobObject(handle)); }