diff --git a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs index f3497aef5..a88f5c1e5 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 hThread); 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)