public void Run(ConfigurationLookup configs, int numberOfThreads) { _configs = configs; var threads = new List <Task>(); foreach (var i in Enumerable.Range(0, numberOfThreads)) { _logger.Debug($"Starting thread number {i+1}"); threads.Add(Task.Factory.StartNew(() => RunTask())); } Task.WaitAll(threads.ToArray()); }
/// <summary> /// Update event listener /// </summary> /// <param name="sender">Sender value</param> /// <param name="e">BroadCastEventArgs value</param> private void UpdateEventListener(object sender, BroadCastEventArgs e) { lock (_locker) { ConfigurationLookup configurationLookUp; if (SerializationHelper.TryDeserialize <ConfigurationLookup>(e.MessageRequest.Message, out configurationLookUp)) { ConfigurationLookup configurationLookUpToBeUpdate = _configurationLookUpCaches.Where(cl => cl.ID == configurationLookUp.ID).FirstOrDefault(); if (configurationLookUpToBeUpdate != null) { configurationLookUpToBeUpdate.Name = configurationLookUp.Name; configurationLookUpToBeUpdate.Value = configurationLookUp.Value; } } } }
/// <summary> /// Delete event listener /// </summary> /// <param name="sender">Sender value</param> /// <param name="e">BroadCastEventArgs value</param> private void DeleteEventListener(object sender, BroadCastEventArgs e) { lock (_locker) { ConfigurationLookup configurationLookUp; if (SerializationHelper.TryDeserialize <ConfigurationLookup>(e.MessageRequest.Message, out configurationLookUp)) { ConfigurationLookup configurationLookUpToBeDelete = _configurationLookUpCaches.Where(cl => cl.ID == configurationLookUp.ID).FirstOrDefault(); if (configurationLookUpToBeDelete != null) { _configurationLookUpCaches.Remove(configurationLookUpToBeDelete); _configurationLookUpCaches.OrderByDescending(cl => cl.ID); } } } }
/// <summary> /// Delete event listener /// </summary> /// <param name="sender">Sender value</param> /// <param name="broadCastEventArgs">BroadCastEventArgs value</param> private static void DeleteEventListener(object sender, BroadCastEventArgs broadCastEventArgs) { lock (_locker) { ConfigurationLookup configurationLookUp; if (SerializationHelper.TryDeserialize <ConfigurationLookup>(broadCastEventArgs.MessageRequest.Message, out configurationLookUp)) { ConfigurationLookup configurationLookUpToBeDelete = _configurationLookUpCaches.Where(cl => cl.ID == configurationLookUp.ID).FirstOrDefault(); if (configurationLookUpToBeDelete != null) { _configurationLookUpCaches.Remove(configurationLookUpToBeDelete); _configurationLookUpCaches.OrderByDescending(cl => cl.ID); cache.Set(CONFIGURATION_LOOKUP_CACHE_KEY, _configurationLookUpCaches, policy); } } } }
static void Main(string[] args) { var logger = log4net.LogManager.GetLogger("Calculator.Host"); logger.Info($"Starting calculator host"); bool run = true; if (args.Contains("-drop")) { QueueItem.DropQueueTable(); run = false; } if (args.Contains("-create")) { QueueItem.CreateQueueTable(); run = true; } if (run) { QueueItem.ResetItems(); var configs = ConfigurationLookup.Create(); using (WebApp.Start <Startup>(url: Configurations.WebApiBase)) { var runner = new QueueProcessorCore(); var t = Task.Factory.StartNew(() => { runner.Run(configs, Configurations.NumberThreads); }); Console.ReadKey(); runner.Stop(); Task.WaitAll(t); } } Console.WriteLine("Press any key to exit"); Console.ReadKey(); }