Exemplo n.º 1
0
        private void SetupEnvironmentConfiguration()
        {
            Log log = Log;

            _pipelineConfiguration["PipelineLogger"] = log;

            CompleteCallback completeCallback = MiddlewareExecutionCompleted;

            _pipelineConfiguration["PipelineSuccessCallback"] = completeCallback;

            AbortCallback abortCallback = MiddlewareExecutionAborted;

            _pipelineConfiguration["PipelineAbortCallback"] = abortCallback;

            _middlewares.ForEach(middleware => middleware.AddPipelineConfiguration(_pipelineConfiguration));
        }
Exemplo n.º 2
0
        public void RunMethodAsync(SelfContainedMethod method, SuccessCallback successCallback, AbortCallback abortCallback)
        {
            ThreadPool.QueueUserWorkItem(delegate
            {
                ExecutionThread = Thread.CurrentThread;

                // Register kill thread
                Stopwatch sw = new Stopwatch();
                sw.Start();
                try
                {
                    ThreadPool.QueueUserWorkItem(delegate
                    {
                        Thread.Sleep(2000);
                        using (CAutoMutex autoMutex = new CAutoMutex(mutex))
                        {
                            if (null != ExecutionThread)
                            {
                                ExecutionThread.Abort();
                                ExecutionThread.Join();
                            }
                        }
                    });

                    object output = method();
                    sw.Stop();

                    using (CAutoMutex autoMutex = new CAutoMutex(mutex))
                    {
                        successCallback(sw.ElapsedMilliseconds, output);
                        ExecutionThread = null;
                    }
                }
                catch (ThreadAbortException)
                {
                    Thread.ResetAbort();
                    abortCallback(sw.ElapsedMilliseconds);
                }
            });
        }