Асинхронные операции с PST‑файлами
Чтобы повысить масштабируемость и отзывчивость современных приложений, Aspose.Email для .NET предоставляет асинхронные методы работы с PST‑файлами. Эти новые API позволяют разработчикам создавать, открывать, объединять и разбивать PST‑файлы без блокировки главного потока, что делает их идеальными для UI‑приложений и сервисов с высокой нагрузкой.
Асинхронное создание PST‑файлов
Этот PersonalStorage.CreateAsync метод позволяет асинхронно создать новый PST‑файл, обеспечивая неблокирующее выполнение в приложениях, работающих с большими объёмами данных или требующих отзывчивого пользовательского интерфейса. Следующий пример кода демонстрирует, как реализовать эту функцию в C#‑проекте:
string pstFilePath = "newMailbox.pst";
var format = FileFormatVersion.Unicode;
// Create a new PST file asynchronously
using (var pst = await PersonalStorage.CreateAsync(pstFilePath, format, CancellationToken.None))
{
Console.WriteLine($"PST file created at: {pstFilePath}");
}
Асинхронное открытие PST‑файлов
Чтобы открыть существующий PST‑файл асинхронно, используйте PersonalStorage.FromFileAsync метод API Aspose.Email. Следующий пример кода демонстрирует, как реализовать эту функцию в C#‑проекте:
string pstFilePath = "newMailbox.pst";
var format = FileFormatVersion.Unicode;
// Open the PST file asynchronously
using (var pst = await PersonalStorage.FromFileAsync(pstFilePath, CancellationToken.None))
{
Console.WriteLine("PST file opened successfully.");
// Access folders or messages here
Console.WriteLine($"Root folder name: {pst.RootFolder.DisplayName}");
}
Асинхронное объединение PST‑файлов
Этот MergeWithAsync метод Aspose.Email PersonalStorage класс позволяет асинхронно объединять содержимое одного PST‑файла с другим. Это полезно в сценариях консолидации почтовых архивов, объединения резервных копий или пакетной обработки данных электронной почты — без блокировки главного потока вашего приложения. Приведённый ниже пример кода демонстрирует, как использовать этот метод в вашем C#‑проекте:
string targetPstPath = "mainMailbox.pst";
string sourcePstPath = "archiveToMerge.pst";
// Open both PST files asynchronously
using (var targetPst = await PersonalStorage.FromFileAsync(targetPstPath, CancellationToken.None))
using (var sourcePst = await PersonalStorage.FromFileAsync(sourcePstPath, CancellationToken.None))
{
// Merge the source PST into the target PST
await targetPst.MergeWithAsync(sourcePst, CancellationToken.None);
Console.WriteLine("Merge operation completed successfully.");
}
Асинхронное разбиение PST‑файлов
Приведённый ниже пример кода демонстрирует, как асинхронно открыть существующий PST‑файл с помощью FromFileAsync, а затем разбить его на несколько частей с помощью SplitIntoAsync. Каждый фрагмент будет не больше 50 МБ и сохранён в указанный выходной каталог. Асинхронное выполнение обеспечивает отсутствие блокировки главного потока, что делает его подходящим для приложений, обрабатывающих большие PST‑архивы.
using (var pst = await PersonalStorage.FromFileAsync("input.pst"))
{
await pst.SplitIntoAsync(50 * 1024 * 1024, "part_", "outputDirectory", CancellationToken.None);
}