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) { } } }
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 }); }