public void Consume(Guid id, ConsumeEventHandler eventConsume = null) { if (eventConsume != null) { if (messageNotifyEvent != null) { if (!messageNotifyEvent[id].GetInvocationList().Contains(eventConsume)) { messageNotifyEvent[id] += eventConsume; } } else { this.messageNotifyEvent[id] += eventConsume; } } if (this.ContainsKey(id)) { BaseMessage msg = this[id]; if (messageNotifyEvent != null) { messageNotifyEvent[id](msg); } } }
public TaskQueue(int workerCount, ConsumeEventHandler <T> OnConsume) { this.OnConsume = OnConsume; workers = new Thread[workerCount]; // Create and start a separate thread for each worker for (int i = 0; i < workerCount; i++) { workers[i] = new Thread(Consume); workers[i].Name = string.Format("Worker{0}", i); workers[i].Start(); } }
public void CancelSubscriMessage(string clientId, ConsumeEventHandler eventConsume) { if (eventConsume != null) { if (this.messagesNotifyEvent != null) { if (this.messagesNotifyEvent[clientId].GetInvocationList().Contains(eventConsume)) { this.messagesNotifyEvent[clientId] -= eventConsume; } } } }
public void SubscrMessage(string clientId, ConsumeEventHandler eventConsume) { if (eventConsume != null) { if (this.messagesNotifyEvent != null) { if (!this.messagesNotifyEvent[clientId].GetInvocationList().Contains(eventConsume)) { this.messagesNotifyEvent[clientId] += eventConsume; } } else { this.messagesNotifyEvent.Add(clientId, eventConsume); } } }
public void should_publish_data_when_added() { const int writeCount = 999; var consumedValue = 0L; var mre = new ManualResetEvent(false); var consumeHandler = new ConsumeEventHandler(writeCount, mre); _doubleBuffer = new BufferController<Event<long>>(1000, evnt => { consumedValue = evnt.Value; consumeHandler.OnNext(evnt); }); new Thread(() => _doubleBuffer.Start()).Start(); for (int data = 0; data <= writeCount; data++) { _doubleBuffer.Add(new Event<long>(data)); } mre.WaitOne(); Assert.AreEqual(writeCount, consumeHandler.CurrentValue); }