// Create the agents to process Notifications private static void CreateAgents() { BufferBlock <ScheduledTaskQueueDto> buffer = new BufferBlock <ScheduledTaskQueueDto>(); ScheduleAgent agent1 = new ScheduleAgent(); ScheduleAgent agent2 = new ScheduleAgent(); ScheduleAgent agent3 = new ScheduleAgent(); agent1.AgentInit(buffer); agent2.AgentInit(buffer); agent3.AgentInit(buffer); RunScheduledTasks(buffer); }
/// <summary> /// Create a schedule /// </summary> /// <param name="scheduleLocation"></param> public Schedule(string scheduleLocation, ref CacheManager cacheManager, ref ClientInfo clientInfoForm) { Trace.WriteLine(string.Format("XMDS Location: {0}", ApplicationSettings.Default.XiboClient_xmds_xmds)); // Get the key for this display _hardwareKey = new HardwareKey(); // Save the schedule location _scheduleLocation = scheduleLocation; // Create a new collection for the layouts in the schedule _layoutSchedule = new Collection <LayoutSchedule>(); // Set cachemanager _cacheManager = cacheManager; // Set client info form _clientInfoForm = clientInfoForm; // Create a Register Agent _registerAgent = new RegisterAgent(); _registerAgentThread = new Thread(new ThreadStart(_registerAgent.Run)); _registerAgentThread.Name = "RegisterAgentThread"; // Create a schedule manager _scheduleManager = new ScheduleManager(_cacheManager, scheduleLocation); _scheduleManager.OnNewScheduleAvailable += new ScheduleManager.OnNewScheduleAvailableDelegate(_scheduleManager_OnNewScheduleAvailable); _scheduleManager.OnRefreshSchedule += new ScheduleManager.OnRefreshScheduleDelegate(_scheduleManager_OnRefreshSchedule); _scheduleManager.OnScheduleManagerCheckComplete += _scheduleManager_OnScheduleManagerCheckComplete; _scheduleManager.ClientInfoForm = _clientInfoForm; // Create a schedule manager thread _scheduleManagerThread = new Thread(new ThreadStart(_scheduleManager.Run)); _scheduleManagerThread.Name = "ScheduleManagerThread"; // Create a Schedule Agent _scheduleAgent = new ScheduleAgent(); _scheduleAgent.CurrentScheduleManager = _scheduleManager; _scheduleAgent.ScheduleLocation = scheduleLocation; _scheduleAgent.HardwareKey = _hardwareKey.Key; _scheduleAgent.ClientInfoForm = _clientInfoForm; // Create a thread for the Schedule Agent to run in - but dont start it up yet. _scheduleAgentThread = new Thread(new ThreadStart(_scheduleAgent.Run)); _scheduleAgentThread.Name = "ScheduleAgentThread"; // Create a RequiredFilesAgent _requiredFilesAgent = new RequiredFilesAgent(); _requiredFilesAgent.CurrentCacheManager = cacheManager; _requiredFilesAgent.HardwareKey = _hardwareKey.Key; _requiredFilesAgent.ClientInfoForm = _clientInfoForm; _requiredFilesAgent.OnComplete += new RequiredFilesAgent.OnCompleteDelegate(LayoutFileModified); // Create a thread for the RequiredFiles Agent to run in - but dont start it up yet. _requiredFilesAgentThread = new Thread(new ThreadStart(_requiredFilesAgent.Run)); _requiredFilesAgentThread.Name = "RequiredFilesAgentThread"; // Library Agent _libraryAgent = new LibraryAgent(); _libraryAgent.CurrentCacheManager = _cacheManager; // Create a thread for the Library Agent to run in - but dont start it up yet. _libraryAgentThread = new Thread(new ThreadStart(_libraryAgent.Run)); _libraryAgentThread.Name = "LibraryAgent"; // Log Agent _logAgent = new LogAgent(); _logAgentThread = new Thread(new ThreadStart(_logAgent.Run)); _logAgentThread.Name = "LogAgent"; }