private void lstEnvelopes_SelectionChanged(object sender, SelectionChangedEventArgs e) { var selectedMessage = (MessageContainer)lstEnvelopes.SelectedItem; var selectedMailbox = (Mailbox)lstMailboxes.SelectedItem; if (selectedMessage == null) { return; } App.Log.Info("Selected message: " + selectedMessage.Uid); // First check if there is already a thread running to do some work. if (thread_downloadMessage != null && thread_downloadMessage.IsAlive) { // Abort the thread if it is already running thread_downloadMessage.Abort(); } if (selectedMessage.BodyStructure == null) { var param = new Collection <Object> { selectedMailbox, selectedMessage }; if (selectedMessage.HtmlView == null) { thread_downloadMessage = new Thread(DownloadEmail); // Finally start the thread with the parameters thread_downloadMessage.Start(param); } else { wbMailRenderer.LoadHTML(selectedMessage.HtmlView.Text); } } else { if (selectedMessage.HtmlView != null) { wbMailRenderer.LoadHTML(selectedMessage.HtmlView.Text); } else // There is a bodystructure, but no view yet. { var param = new Collection <Object>(); param.Add(selectedMailbox); param.Add(selectedMessage); if (selectedMessage.HtmlView == null) { thread_downloadMessage = new Thread(DownloadEmail); // Finally start the thread with the parameters thread_downloadMessage.Start(param); } else { wbMailRenderer.LoadHTML(selectedMessage.HtmlView.Text); } //App.Log.Error("Message " + selectedMessage.Uid + " has a BodyStructure, but no View!"); } } // Set the mail to "Seen" var set = SequenceSet.CreateUidSet(selectedMessage.Uid); Imap.Client.Store(set, MessageFlags.Seen, StoreProcedures.Add); App.Log.Debug("Message " + selectedMessage.Uid + " set to 'seen'."); }