Beispiel #1
0
        public static JobObject Enable(this JobObject job, IsolationLimits limits, Action <string, object> onSet = null)
        {
            if (job == null)
            {
                throw new ArgumentNullException(nameof(job));
            }

            if (limits == null)
            {
                throw new ArgumentNullException(nameof(limits));
            }

            job.Update(o =>
            {
                if (limits.MaxMemory > 0)
                {
                    o.ProcessMemoryLimit = limits.MaxMemory;
                    onSet?.Invoke(nameof(IsolationLimits.MaxMemory), limits.MaxMemory);
                }

                if (limits.MaxCpuUsage > 0)
                {
                    o.CpuRateLimit = limits.MaxCpuUsage;
                    onSet?.Invoke(nameof(IsolationLimits.MaxCpuUsage), limits.MaxCpuUsage);
                }

                if (limits.AffinityMask != IntPtr.Zero)
                {
                    o.ProcessorAffinity = limits.AffinityMask;
                    onSet?.Invoke(nameof(IsolationLimits.AffinityMask), limits.AffinityMask);
                }
            });

            return(job);
        }