Example #1
0
        private static void ExecutePipeline(SemaphoreSlim semaphoreSlim, Type pipelineType, PipelineConfiguration configuration)
        {
            ISyncPipeline pipeline;

            try
            {
                if ((object)semaphoreSlim == null)
                {
                    throw new ArgumentNullException(nameof(semaphoreSlim));
                }

                if ((object)pipelineType == null)
                {
                    throw new ArgumentNullException(nameof(pipelineType));
                }

                if ((object)configuration == null)
                {
                    throw new ArgumentNullException(nameof(configuration));
                }

                pipeline = (ISyncPipeline)Activator.CreateInstance(pipelineType);

                if ((object)pipeline == null)
                {
                    throw new InvalidOperationException(nameof(pipeline));
                }

                using (pipeline)
                {
                    pipeline.Configuration = configuration;
                    pipeline.Create();

                    using (ISyncContext context = pipeline.CreateContext())
                    {
                        context.Create();

                        pipeline.Execute(context);
                    }
                }
            }
            finally
            {
                Thread.Sleep(10000);

                if ((object)semaphoreSlim != null)
                {
                    semaphoreSlim.Release();
                }
            }
        }