public void Close() { if (Proc != null && !Proc.HasExited) { try { Proc.CloseMainWindow(); } catch { try { Proc.Kill(); } catch { } } while (Proc.HasExited) { Thread.Sleep(250); } } Proc?.Dispose(); if (ProcWithJobObject != null) { ProcWithJobObject.TerminateProc(); } }
public async Task CloseAsync(CancellationToken cancellationToken = default(CancellationToken)) { if (Proc != null && !Proc.HasExited) { try { Proc.CloseMainWindow(); } catch { try { Proc.Kill(); } catch { } } while (!Proc.HasExited) { await Task.Delay(250); } } Proc?.Dispose(); if (ProcWithJobObject != null) { ProcWithJobObject.TerminateProc(); } }