コード例 #1
0
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            ConsoleIOManager.CaptureConsole();
            try
            {
                var serviceName = args[0];
                var processor   = new Processor(serviceName);
                var host        = new ServiceHost(processor);
                host.AddServiceEndpoint(typeof(IJobProcesorInterface),
                                        new NetNamedPipeBinding(NetNamedPipeSecurityMode.None),
                                        "net.pipe://localhost/" + serviceName);

                host.Open();

                Console.WriteLine("Enter to exit...");
                Console.Read();
                host.Close();
                Console.WriteLine("Closed");
            }
            finally
            {
                try
                {
                    ConsoleIOManager.Finalize();
                }
                catch (Exception) { }
            }
        }
コード例 #2
0
        public JobExecutionSummary ExecuteJob(string jobId, string jobTypeName, object param)
        {
            var currentDir      = Environment.CurrentDirectory;
            var output          = string.Empty;
            var executionResult = JobExecutionResult.Failed;

            _jobType      = jobTypeName;
            _currentJobId = jobId;
            _status       = ProcessorStatus.Processing;

            try
            {
                Environment.CurrentDirectory = GetJobExecutionFolder(jobTypeName);
                var jobType = Type.GetType(jobTypeName);
                var job     = (IJob)Activator.CreateInstance(jobType);
                job.Execute(param);
                executionResult = JobExecutionResult.Success;
            }
            catch (Exception ex)
            {
                Console.WriteLine("----- BEGIN ERROR -----");
                Console.WriteLine("Unhandled Exception - " + ex.ToString());
                Console.WriteLine("-----  END ERROR  -----");
            }
            finally
            {
                _jobType      = null;
                _currentJobId = null;
                _status       = ProcessorStatus.Idle;
                Environment.CurrentDirectory = currentDir;
                output = ConsoleIOManager.ReadAll();
                ConsoleIOManager.ResetIO();
            }

            return(new JobExecutionSummary
            {
                JobId = jobId,
                JobType = jobTypeName,
                Output = output,
                ProcessorID = this.ProcessorID,
                Result = executionResult
            });
        }