From ff0f205a0529cfa3e4bdcbeb6caf0d74231e4fbd Mon Sep 17 00:00:00 2001 From: Robert Jordan Date: Thu, 23 Aug 2007 06:17:06 +0000 Subject: 2007-08-23 Robert Jordan * Process.cs: implement PriorityClass. Fixes #81756. svn path=/trunk/mcs/; revision=84679 --- mcs/class/System/System.Diagnostics/Process.cs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'mcs/class/System/System.Diagnostics/Process.cs') diff --git a/mcs/class/System/System.Diagnostics/Process.cs b/mcs/class/System/System.Diagnostics/Process.cs index f312f49e8dc..8e1b3e569c0 100644 --- a/mcs/class/System/System.Diagnostics/Process.cs +++ b/mcs/class/System/System.Diagnostics/Process.cs @@ -480,17 +480,34 @@ namespace System.Diagnostics { } } - [MonoTODO] + [MonoLimitation ("Under Unix, only root is allowed to raise the priority.")] [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [MonitoringDescription ("The relative process priority.")] public ProcessPriorityClass PriorityClass { get { - return(ProcessPriorityClass.Normal); + int error; + int prio = GetPriorityClass (process_handle, out error); + if (prio == 0) + throw new Win32Exception (error); + return (ProcessPriorityClass) prio; } set { + // LAMESPEC: not documented on MSDN for NET_1_1 + if (!Enum.IsDefined (typeof (ProcessPriorityClass), value)) + throw new InvalidEnumArgumentException (); + + int error; + if (!SetPriorityClass (process_handle, (int) value, out error)) + throw new Win32Exception (error); } } + [MethodImplAttribute(MethodImplOptions.InternalCall)] + static extern int GetPriorityClass (IntPtr handle, out int error); + + [MethodImplAttribute(MethodImplOptions.InternalCall)] + static extern bool SetPriorityClass (IntPtr handle, int priority, out int error); + [MonoTODO] [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [MonitoringDescription ("The amount of memory exclusively used by this process.")] -- cgit v1.2.3