Compartilhar via


Usar SetColumns para enumerar itens de forma eficiente em uma pasta

Este exemplo mostra como melhorar o desempenho da enumeração do conjunto Itens usando o método SetColumns(String) para armazenar em cache determinadas propriedades de cada item no conjunto.

Exemplo

Observação

O exemplo de código a seguir foi tirado do artigo Programação de aplicativos do Microsoft Office Outlook 2007.

Para enumerar itens em uma coleção, use o método SetColumns para armazenar em cache as propriedades na coleção Items. SetColumns recebe um argumento que é uma cadeia de caracteres delimitada por vírgula que representa os nomes das propriedades. Depois que todos os itens da coleção tiverem sido enumerados, chame o método ResetColumns () para limpar o cache de propriedades.

No exemplo de código a seguir, EnumerateContactsWithSetColumns usa o método SetColumns para armazenar em cache as propriedades FileAs, CompanyName e JobTitle dos itens na pasta Contatos. Observe que você deve fazer testes em busca de cadeias de caracteres vazias ou uma referência nula na restrição.

Observe que uma pasta do Outlook pode conter itens de tipos diferentes. Esta amostra de código faz uso da classe auxiliar OutlookItem, definida em Criar uma classe auxiliar para acessar membros comuns de itens do Outlook, para chamar convenientemente a propriedade OutlookItem.Class para verificar a classe de mensagem de cada item no subconjunto filtrado de itens na pasta, antes de definir o item como um item de contato.

Se usar o Visual Studio para testar este exemplo de código, adicione primeiro uma referência ao componente da biblioteca de objetos do Microsoft Outlook 15.0 e especifique a variável do Outlook quando importar o namespace Microsoft.Office.Interop.Outlook. A instruçãousing não deve ocorrer diretamente antes das funções no exemplo de código, mas deve ser adicionada antes da declaração de classe pública. The following line of code shows how to do the import and assignment in C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void EnumerateContactsWithSetColumns()
{
    // Obtain Contacts folder
    Outlook.Folder folder =
        Application.Session.GetDefaultFolder(
        Outlook.OlDefaultFolders.olFolderContacts)
        as Outlook.Folder;
    string filter = "Not([CompanyName] Is Null)" +
        " AND Not([JobTitle] Is Null)";
    Outlook.Items items = folder.Items.Restrict(filter);
    items.SetColumns("FileAs, CompanyName, JobTitle");
    for (int i = 1; i <= items.Count; i++)
    {
        // Create an instance of OutlookItem
        OutlookItem myItem = new OutlookItem(items[i]);
        if (myItem.Class == Outlook.OlObjectClass.olContact)
        {
            // Use InnerObject to return ContactItem
            Outlook.ContactItem contact =
                myItem.InnerObject as Outlook.ContactItem;
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(contact.FileAs);
            sb.AppendLine(contact.CompanyName);
            sb.AppendLine(contact.JobTitle);
            sb.AppendLine();
            Debug.WriteLine(sb.ToString());
        }
    }
    items.ResetColumns();
}

Confira também