public Controller(BlockingMediator mediator) { _signal = new AutoResetEvent(false); mediator.AddSignal(_signal); dynamic config = ConfigurationManager.GetSection("delays"); var delays = new Dictionary<MessageType, int>(); foreach (string name in config) { delays[Hearts.Utility.Enum.Parse<MessageType>(name)] = int.Parse(config[name]); } foreach (var type in Hearts.Utility.Enum.GetValues<MessageType>()) { var key = type; mediator.Subscribe(type, ignore => { if (delays.ContainsKey(key)) { Thread.Sleep(delays[key]); } _signal.Reset(); if (!IsBlocking) { ThreadPool.QueueUserWorkItem(_ => _signal.Set()); } }); } }
public GameController(BlockingMediator mediator) { _mediator = mediator; _mediator.AddSignal(_signal); }