Асинхронные операции с 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);
}