I have an VSTO Outlook Add-in. In the compose windows I have a button. When this button is clicked the recipients that satisfy a condition are removed. The recipients that need to be deleted are stored in a list, that is, List<Outlook.Recipient>. I iterate this list and remove each recipient.

```
foreach (Outlook.Recipient recipient in this.RecipientsList)
{
    this.MyMailItem?.Recipients?.Remove(recipient.Index);
}

// clear all the recipients
this.RecipientsList.Clear();

```

I have noted that the more recipients need to be removed the more slower is and also not always all the recipients contained in the list are removed, sometimes yet and sometimes not. Two things here:

* How can I optimize the speed for removing recipients?
* Why sometimes all the recipients contained in the list are not being removed? It's randomly, sometimes yes, sometimes not.

Note that this.MyMailItem is of type Outlook.MailItem and this.MyMailItem.Recipients is of type Outlook.Recipients.

Remove function requires an integer as a parameter, this is what its definition says, see here.