Удаление удаленных элементов в Outlook 2010

Согласно документам, когда я удаляю контакт из адресной книги, он перемещается в «удаленную» папку. Предположим, есть ленивый программист (не ты и не я, конечно), который не хочет писать код для обновления контактов при каждом запуске Outlook, а просто удаляет все контакты из адресной книги, а затем повторно заполняет ее (скажем, не так много пользователей, которых нужно заполнить, и что Outlook запускается большое количество раз каждый день), так что производительность не является проблемой, а все более и более огромное количество записей в удаленной папке есть.

Аккуратно ли Outlook управляет хранением удалений или мне нужно, хрмп..., нужно ли этому ленивому программисту беспокоиться об этом?

Упомянутый программист, вероятно, будет использовать код, который выглядит примерно так.

Outlook.Folder contacts = 
  this.Application.Session.GetDefaultFolder(
    Outlook.OlDefaultFolders.olFolderContacts) as Outlook.Folder;
Outlook.Folder addressBook = contacts.Folders["lazy"] as Outlook.Folder;

while (addressBook.Items.Count > 0)
  addressBook.Items.OfType<Outlook.ContactItem>().Last().Delete();

Если ему нужно беспокоиться, он, вероятно, захочет удалить файлы из папки удаления, но, конечно, только те, которые были удалены его программным обеспечением. Есть ли плавный способ удаления-удаления контакта?


person Konrad Viltersten    schedule 07.09.2012    source источник


Ответы (1)


Я бы просто каждый раз заново создавал Folder и избегал медленных однократных удалений ContactItem. Когда вы удалите Folder, он не сохранит копию в удаленных элементах. Одно Folder удаление и сохранение будет быстрее, чем большое количество удалений элементов.

Outlook.Folders contactFolders = contacts.Folders;
if (contactFolders.Cast<Outlook.Folder>()
  .Where(c => c.Name == "My AB").Count() > 0)
    contactFolders["My AB"].Delete();

Просто выполните этапы создания адресной книги из предыдущего поста SO.

person SliverNinja - MSFT    schedule 07.09.2012
comment
Ах, я так зациклился на отдельных контактах, что забыл об общей картине. Тем не менее, я хочу иметь возможность делать и то, и другое, и, поэтому я рад, что разобрался с этим. И, конечно, спасибо за подсказку. Принятие (вероятно) последует в ближайшее время. - person Konrad Viltersten; 07.09.2012
comment
Я пытался быть хорошим мальчиком и удалить папку навсегда, но у меня возникли проблемы с правами доступа. Любые намеки на это или я должен задать совершенно новый вопрос (если это более сложный вопрос)? - person Konrad Viltersten; 07.09.2012
comment
Я бы задал новый вопрос, так как вышеизложенное отлично работает для меня. Вам просто нужно включить сообщение об ошибке в свой новый пост. - person SliverNinja - MSFT; 07.09.2012
comment
В ПОРЯДКЕ. Просто для ясности - вышеперечисленное отлично работает и на моей машине. У меня возникают проблемы, когда я начинаю играть с папкой удаленных элементов. Ваше решение безупречно. Я просто беспокоюсь об огромной перегрузке хранилища, если я удалю слишком много вещей в папку удаления элементов. - person Konrad Viltersten; 07.09.2012
comment
Вам не нужно трогать папку удаленных элементов, если вы удалите весь файл Folder. Когда вы вводите Folder.Delete(), элемент удаляется без возможности восстановления — он не копируется в папку удаленных элементов, пока вы не выдадите Folder.Move(folderDeletedItems). - person SliverNinja - MSFT; 07.09.2012