public void ThreadSafeLogThreadSafetyTest() { int count = 10000; ThreadSafeLog log = new ThreadSafeLog(); Parallel.For(0, count, (i) => { log.LogMessage("Message " + i); // write something log.Messages.Count(); // iterate over all messages }); Assert.AreEqual(count, log.Messages.Count()); }
public Core() { var log = new ThreadSafeLog(SlaveCore.Properties.Settings.Default.MaxLogCount); this.pluginManager = new PluginManager(WcfService.Instance, log); this.taskManager = new TaskManager(pluginManager, log); log.MessageAdded += new EventHandler<EventArgs<string>>(log_MessageAdded); RegisterTaskManagerEvents(); this.configManager = new ConfigManager(taskManager); ConfigManager.Instance = this.configManager; }
private ThreadSafeLog(ThreadSafeLog original, Cloner cloner) : base(original, cloner) { this.messages = new ConcurrentQueue <string>(original.messages); this.maxMessageCount = original.maxMessageCount; }
private ThreadSafeLog(ThreadSafeLog original, Cloner cloner) : base(original, cloner) { this.messages = new ConcurrentQueue<string>(original.messages); this.maxMessageCount = original.maxMessageCount; }