עבודה עם קבצי PST גדולים
Contents
[
Hide
]
הביצועים עשויים להיפגע בעת עיבוד קבצי PST גדולים. הפתרונות הבאים יעזרו לך לשפר את ביצועי האפליקציה שלך כאשר אתה מעבד קבצים גדולים.
שקול שיטות המחזירות
IEnumerable בזמן ניווט בתיקיות או הודעות ב-PST.
using var pst = PersonalStorage.FromFile(@"storage.pst");
foreach (var folder in pst.RootFolder.EnumerateFolders())
foreach (var messageInfo in folder.EnumerateMessages())
{
// Do something with message
}
העדף MessageInfo לגישה למאפייני הודעה בסיסיים.
foreach (var messageInfo in folder.EnumerateMessages())
{
Console.WriteLine($"Subject: {messageInfo.Subject}");
Console.WriteLine($"To: {messageInfo.DisplayTo}");
Console.WriteLine($"Importance: {messageInfo.Importance}");
Console.WriteLine($"Message Class: {messageInfo.MessageClass}");
}
הימנע משימוש ב- ExtractMessage או EnumerateMapiMessages שיטות לכל ההודעות אלא אם נדרש גישה לכל המאפיינים.
שקול להשתמש ב- EnumerateMessagesEntryId כדי לאחזר בקלות את כל מזהי ההודעות המוכרות בתיקייה.
foreach (var id in folder.EnumerateMessagesEntryId())
{
// Use id to retrieve a property (ExtractProperty),
// extract a MapiMessage (ExtractMessage),
// extarct message attachments (ExtractAttachments),
// save msg to a stream(SaveMessageToStream).
}
שקול להשתמש ב- ExtractProperty לקריאת מאפיין יחיד החסר ב-MessageInfo.
foreach (var msgId in folder.EnumerateMessagesEntryId())
{
var transportMessageHeaders =
pst.ExtractProperty(Convert.FromBase64String(msgId), KnownPropertyList.TransportMessageHeaders.Tag)
.GetString();
}
שקול להשתמש ב- ExtractAttachments אם נדרשים רק הקבצים המצורפים.
foreach (var msgId in folder.EnumerateMessagesEntryId())
{
var attachments = pst.ExtractAttachments(msgId);
}
השתמש חיפוש לפי קריטריהסינון מבוסס - לקבלת ההודעות הדרושות.
using var pst = PersonalStorage.FromFile(@"storage.pst");
var builder = new PersonalStorageQueryBuilder();
// Unread messages
builder.HasNoFlags(MapiMessageFlags.MSGFLAG_READ);
foreach (var folder in pst.RootFolder.EnumerateFolders())
{
var unread = folder.GetContents(builder.GetQuery());
}
שקול להשתמש ב- SaveMessageToStream אם יש צורך לשמור הודעות מ-PST.
במקום להשתמש ב-
foreach (var id in folder.EnumerateMessagesEntryId())
{
var msg = pst.ExtractMessage(id);
msg.Save(@"message.msg");
}
השתמש:
foreach (var id in folder.EnumerateMessagesEntryId())
{
pst.SaveMessageToStream(id, File.OpenWrite(@"message.msg"));
}