static void Main(string[] args) { Logger appLogger = Logger.Instance; Settings appConfig = Settings.Instance; // ====================================== // TODO: replace with plugin architecture // ====================================== List <ITaskPerformer> availableProcessingResources = new List <ITaskPerformer>(); availableProcessingResources.Add(new MathToolbox()); availableProcessingResources.Add(new StatisticsToolbox()); // ====================================== if (ReadResourcesList() && ConfigureLogger() && CreateWorkingFolders()) { TaskPerformerContextManager provider = new TaskPerformerContextManager(); foreach (var resource in availableProcessingResources) { string resourceId = string.Format("{0}-{1}", resource.Name, resource.Version); if (appConfig.Resources.Contains <string>(resourceId)) { if (provider.Add(resource)) { Console.WriteLine("{0} has been successfully loaded!", resourceId); } } } TaskProcessingManager scheduler = new TaskProcessingManager(); scheduler.SetContextProvider(provider); IProcessingServiceContainer container = new ProcessingServiceContainer( scheduler, appConfig.ReadyTasksFolder, appConfig.CompletedTasksFolder); ServiceHost host = null; try { host = new ProcessingServiceHost(container); host.Open(); Console.WriteLine("The service ProcessingService is ready."); Console.WriteLine("Press <Enter> to stop the service..."); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Error while starting the service: {0}", e.ToString()); Console.WriteLine(); } finally { if (host != null) { try { host.Close(); } catch (Exception e) { Console.WriteLine("Error while stopping the service: {0}", e.ToString()); Console.WriteLine(); host.Abort(); } } } } appLogger.Flush(); appLogger.Cleanup(); Console.WriteLine("Press <Enter> to close the application..."); Console.ReadLine(); }
/// <summary> /// /// </summary> /// <param name="scheduler"></param> /// <param name="readyTasksFolder"></param> /// <param name="completedTasksFolder"></param> public ProcessingServiceContainer(TaskProcessingManager scheduler, string readyTasksFolder, string completedTasksFolder) { m_TaskScheduler = scheduler; m_ReadyTasksFolder = readyTasksFolder; m_CompletedTasksFolder = completedTasksFolder; }