Exemple #1
0
 private Task PostHandleTermination(TerminationException te)
 {
     if (_loggerEnabled && _logger != null)
     {
         _logger.Info("broke the loop", new ExceptionRecord(te));
     }
     return(Task.CompletedTask);
 }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
            }
        }