///<summary>Returns distinct list of email strings to be recommended to user. ///Splits all email address fields into a large list of individual addresses into one large distinct list. ///When given list is null, will run query.</summary> private void SetHistoricContacts(List<EmailMessage> listEmailMessages) { if(EmailAddressPreview==null) { //Only null when failed to match from address. If we do not know the from address then we can't load anything useful. return; } EmailAddress emailAddressPreview=EmailAddressPreview.Clone(); ODThread thread=new ODThread(o => { List<string> listHistoricContacts; if(listEmailMessages==null) { listHistoricContacts=EmailMessages.GetHistoricalEmailAddresses(emailAddressPreview); } else { listHistoricContacts=EmailMessages.GetAddressesFromMessages(listEmailMessages); } this.InvokeIfRequired(() => { _listHistoricContacts=listHistoricContacts; _hasSetHistoricContacts=true; }); }); thread.Name="SetHistoricContacts"; thread.Start(); }