private Task PostHandleTermination(TerminationException te) { if (_loggerEnabled && _logger != null) { _logger.Info("broke the loop", new ExceptionRecord(te)); } return(Task.CompletedTask); }
internal async Task <Exception?> OnTerminateAsync(TerminationException te, IContext context) { try { this.Terminate?.Invoke(this, new TerminationEventArgs(te, context)); return(null); } catch (Exception e) { await this.OnUnhandledErrorAsync(e, context); return(e); } }
private async Task <int> HandleTermination(AppWorker appWorker, TerminationException te, IContext context, int ret) { var e1 = await appWorker.OnTerminateAsync(te, context); var e2 = await _config.OnTerminateAsync(te, context); if (e2 != null) { return(e2.HResult); } if (e1 != null) { return(e1.HResult); } if (te.HResult != 0) { return(te.HResult); } return(ret); }
public void Dispose() { if (m_disposed) { return; } try { if (Common.IsPosixEnvironment) { foreach (WeakReference <Process> childProcessReference in m_childProcesses) { Process childProcess; if (!childProcessReference.TryGetTarget(out childProcess)) { continue; } try { childProcess.Kill(); } catch (Exception ex) { TerminationException?.Invoke(this, new EventArgs <Exception>(ex)); } } } m_jobHandle?.Dispose(); m_jobHandle = null; } finally { m_disposed = true; GC.SuppressFinalize(this); } }