Browse Source

Use ManualResetEventSlim instead

pull/65/head
Meivyn 2 years ago
parent
commit
cb44b792c8
No known key found for this signature in database GPG Key ID: 8BDD3E48158B2F71
1 changed files with 4 additions and 2 deletions
  1. +4
    -2
      IPA.Loader/Logging/StdoutInterceptorPipes.cs

+ 4
- 2
IPA.Loader/Logging/StdoutInterceptorPipes.cs View File

@ -11,7 +11,7 @@ namespace IPA.Logging
{ {
// Used to ensure the server starts first, as Mono struggles with this simple task. // Used to ensure the server starts first, as Mono struggles with this simple task.
// Otherwise it would throw a ERROR_PIPE_CONNECTED Win32Exception. // Otherwise it would throw a ERROR_PIPE_CONNECTED Win32Exception.
private static readonly ManualResetEvent manualResetEvent = new(false);
private static readonly ManualResetEventSlim manualResetEvent = new(false);
public static bool ShouldRedirectStdHandles; public static bool ShouldRedirectStdHandles;
@ -58,6 +58,7 @@ namespace IPA.Logging
{ {
Console.WriteLine(ex); Console.WriteLine(ex);
pipeServer.Close(); pipeServer.Close();
manualResetEvent.Dispose();
} }
}); });
} }
@ -71,7 +72,7 @@ namespace IPA.Logging
try try
{ {
// If the client starts first, blocks the client thread. // If the client starts first, blocks the client thread.
manualResetEvent.WaitOne();
manualResetEvent.Wait();
pipeClient.Connect(); pipeClient.Connect();
SetStdHandle(stdHandle, pipeClient.SafePipeHandle.DangerousGetHandle()); SetStdHandle(stdHandle, pipeClient.SafePipeHandle.DangerousGetHandle());
while (pipeClient.IsConnected) while (pipeClient.IsConnected)
@ -83,6 +84,7 @@ namespace IPA.Logging
{ {
Console.WriteLine(ex); Console.WriteLine(ex);
pipeClient.Close(); pipeClient.Close();
manualResetEvent.Dispose();
} }
}); });
} }


Loading…
Cancel
Save