Remove unnecessary delegate/closure from NtProcessInfoHelper on Windows (#50387)
authorStephen Toub <stoub@microsoft.com>
Mon, 29 Mar 2021 22:10:00 +0000 (18:10 -0400)
committerGitHub <noreply@github.com>
Mon, 29 Mar 2021 22:10:00 +0000 (18:10 -0400)
src/libraries/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Win32.cs
src/libraries/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Windows.cs

index 18243a7..53c9c74 100644 (file)
@@ -252,7 +252,7 @@ namespace System.Diagnostics
         private const int DefaultCachedBufferSize = 128 * 1024;
 #endif
 
-        internal static ProcessInfo[] GetProcessInfos(Predicate<int>? processIdFilter = null)
+        internal static ProcessInfo[] GetProcessInfos(int? processIdFilter = null)
         {
             ProcessInfo[] processInfos;
 
@@ -342,7 +342,7 @@ namespace System.Diagnostics
             return newSize;
         }
 
-        private static unsafe ProcessInfo[] GetProcessInfos(ReadOnlySpan<byte> data, Predicate<int>? processIdFilter)
+        private static unsafe ProcessInfo[] GetProcessInfos(ReadOnlySpan<byte> data, int? processIdFilter)
         {
             // Use a dictionary to avoid duplicate entries if any
             // 60 is a reasonable number for processes on a normal machine.
@@ -356,7 +356,7 @@ namespace System.Diagnostics
 
                 // Process ID shouldn't overflow. OS API GetCurrentProcessID returns DWORD.
                 int processInfoProcessId = pi.UniqueProcessId.ToInt32();
-                if (processIdFilter == null || processIdFilter(processInfoProcessId))
+                if (processIdFilter == null || processIdFilter.GetValueOrDefault() == processInfoProcessId)
                 {
                     // get information for a process
                     ProcessInfo processInfo = new ProcessInfo((int)pi.NumberOfThreads)
index 9807516..103443d 100644 (file)
@@ -75,7 +75,7 @@ namespace System.Diagnostics
             else
             {
                 // local case: do not use performance counter and also attempt to get the matching (by pid) process only
-                ProcessInfo[] processInfos = NtProcessInfoHelper.GetProcessInfos(pid => pid == processId);
+                ProcessInfo[] processInfos = NtProcessInfoHelper.GetProcessInfos(processId);
                 if (processInfos.Length == 1)
                 {
                     return processInfos[0];