aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs
diff options
context:
space:
mode:
authorjluce50 <jeremyluce@gmail.com>2015-03-03 14:07:18 -0600
committerjluce50 <jeremyluce@gmail.com>2015-03-03 14:07:18 -0600
commit0be639e68a52b6633f9d81ea7249dbc10598a5dd (patch)
tree41e2e2e41a1b86bb1668727e984ada957a31b53d /MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs
parent6c2e01830c7234438b879af633caaf415f560a5a (diff)
Close thread handle after suspend/resume (per MSDN ms684335)
Diffstat (limited to 'MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs')
-rw-r--r--MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs15
1 files changed, 10 insertions, 5 deletions
diff --git a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs
index f3497aef5..413e19239 100644
--- a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs
+++ b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs
@@ -29,8 +29,11 @@ namespace MediaBrowser.ServerApplication.Native
static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
[DllImport("kernel32.dll")]
static extern uint SuspendThread(IntPtr hThread);
- [DllImport("kernel32.dll")]
- static extern int ResumeThread(IntPtr hThread);
+ [DllImport("kernel32.dll")]
+ static extern int ResumeThread(IntPtr hThread);
+ [DllImport("kernel32.dll")]
+ [return: MarshalAs(UnmanagedType.Bool)]
+ public static extern bool CloseHandle(IntPtr hObject);
public static void Suspend(this Process process)
{
@@ -41,7 +44,8 @@ namespace MediaBrowser.ServerApplication.Native
{
break;
}
- SuspendThread(pOpenThread);
+ SuspendThread(pOpenThread);
+ CloseHandle(pOpenThread);
}
}
public static void Resume(this Process process)
@@ -52,8 +56,9 @@ namespace MediaBrowser.ServerApplication.Native
if (pOpenThread == IntPtr.Zero)
{
break;
- }
- ResumeThread(pOpenThread);
+ }
+ ResumeThread(pOpenThread);
+ CloseHandle(pOpenThread);
}
}
public static void Print(this Process process)