बड़ी 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 फ़ोल्डर में मौजूद सभी संदेश IDs को आसानी से प्राप्त करने के लिए।
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"));
}