Exemplo n.º 1
0
        private void EndProcessClassificationObjects()
        {
            try
            {
                if (ProcessingFinished != null)
                {
                    ProcessingFinished(this, null);
                }
                Trace.TraceInformation("Processing Classification Objects finished. (took: {0})", Monitor.ProcessingElapsed);
                CurrentRuleManager.OnRulesCleanupEvent();

                if (OutputStarting != null)
                {
                    OutputStarting(this, null);
                }
                Trace.TraceInformation("Creating output started.");

                // flush output to all the registered output writers
                // this is done in synchronous manner to support simple architecture for output writers
                // output writers can be asynchronous but it has to be transparent to the engine, i.e. they would have to
                // block on IOutputWriter.Finish to wait for asynchronous operations to finalize

                CurrentRuleManager.OutputWriter.FlushOutput(CurrentRuleManager.OutputFromAllRules);
                CurrentRuleManager.OutputWriter.FinishOutputWriters();

                if (OutputFinished != null)
                {
                    OutputFinished(this, null);
                }
                Trace.TraceInformation("Creating output finished. (took: {0})", Monitor.OutputElapsed);
            }
            catch (OutOfMemoryException e)
            {
                Trace.TraceError("Ran out of memory writing output logs. Further processing will be aborted...");
                Monitor.LogException(e);
                AbortProcessing();
            }
            finally
            {
                AllOutputFinished.Set();
                CoProcessingDone.Set();
            }
        }
Exemplo n.º 2
0
 private void AbortProcessing()
 {
     CoProcessingDone.Set();
     AllOutputFinished.Set();
 }