Compartir a través de


Usar SetColumns para enumerar de forma eficaz elementos de una carpeta

En este ejemplo se muestra cómo mejorar el rendimiento de la enumeración de la colección Items mediante el método SetColumns(String) para guardar en la memoria caché determinadas propiedades de cada elemento de la colección.

Ejemplo

Nota:

El siguiente ejemplo de código es un fragmento de Programming Applications for Microsoft Office Outlook 2007 (Programación de aplicaciones para Microsoft Office Outlook 2007).

Para enumerar los elementos de una colección, use el método SetColumns para guardar en la memoria caché las propiedades de la colección Items. SetColumns toma un argumento que es una cadena delimitada por comas que representa los nombres de las propiedades. Una vez que se han enumerado todos los elementos de la colección, llame al método ResetColumns() para borrar la caché de propiedades.

En el ejemplo de código siguiente, EnumerateContactsWithSetColumns usa el método SetColumns para guardar en la memoria caché las propiedades FileAs, CompanyName y JobTitle de los elementos de la carpeta Contactos. Tenga en cuenta que debe comprobar si hay cadenas vacías o una referencia nula en la restricción.

Tenga en cuenta que una carpeta de Outlook puede contener elementos de diferentes tipos. Este ejemplo de código utiliza la clase auxiliar OutlookItem, definida en Crear una clase auxiliar para acceder a los miembros de elementos comunes de Outlook, para llamar a la propiedad OutlookItem.Class para comprobar la clase de mensaje de cada elemento del subconjunto filtrado de elementos de la carpeta, antes de asumir que el elemento es un elemento de contacto.

Si usa Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente de la biblioteca de objetos de Microsoft Outlook 15.0 y especificar la variable de Outlook al importar el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción using no debe producirse directamente antes de las funciones en el ejemplo de código, pero debe agregarse antes de la declaración de clase pública. La siguiente línea de código muestra cómo realizar la importación y la asignación en 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();
}

Vea también