async Task FetchMessageSummariesAsync(bool print) { var messageIds = await folder.SearchAsync(SearchQuery.NotSeen); if (messageIds.Count == 0) { return; } var messages = await folder.FetchAsync(messageIds, MessageSummaryItems.UniqueId | MessageSummaryItems.Envelope, cancel.Token); var toDelete = new List <UniqueId>(); foreach (var message in messages) { try { bool removeEmail = false; NewMessageArrived?.Invoke(message.NormalizedSubject, ref removeEmail); if (removeEmail) { toDelete.Add(message.UniqueId); } } catch (Exception ex) { Console.WriteLine("Problem handling message: " + ex.Message); } } folder.AddFlags(toDelete, MessageFlags.Seen, true); }
public void Start(string group, ICollection <string> topics) { var config = new ConsumerConfig { BootstrapServers = _bootstrapServers, GroupId = group, AutoOffsetReset = AutoOffsetReset.Latest }; var ct = new CancellationToken(); using (var consumer = new ConsumerBuilder <Ignore, string>(config).Build()) { consumer.Subscribe(topics); while (!cancelled) { var consumeResult = consumer.Consume(ct); // handle consumed message var msg = new StreamMessage(consumeResult.Message.Value); NewMessageArrived?.Invoke(msg); } consumer.Close(); } }
private void PortOnDataReceived(object sender, SerialDataReceivedEventArgs serialDataReceivedEventArgs) { try { if (Port.IsOpen) { var str = Port.ReadLine(); //save messages in a buffer if it is needed to be read within a certain time. lock (messageBuffer) { messageBuffer.Enqueue(Message.ParseMessage(str)); } var msg = Message.ParseMessage(str); NewMessageArrived?.Invoke(msg); } // Port.DiscardInBuffer(); } catch (Exception ex) { Console.WriteLine("DataRecieved Error:{0}", ex.Message); } }
/// <summary> /// Fire new message arrived event /// </summary> /// <param name="e"></param> protected virtual void OnNewMessageArrived(NewMessageEventArgs e) { NewMessageArrived?.Invoke(this, e); }