C # программа выходит с кодом 0 в середине выполнения - PullRequest
0 голосов
/ 24 мая 2018

У меня есть программа на C # .NET, работающая в Visual Studio.Его функция заключается в объединении файлов PDF вместе на основе их имен файлов.Он отлично работает для первых 12 или около того PDF-файлов, но затем неожиданно завершает работу с кодом 0 в определенный момент.Я не использую многопоточность, и я использую библиотеку PDF iTextSharp.

public static string MergePDFs(List<string> fileNames, ref string targetPdf)
{
    string merged = "";
    using (FileStream stream = new FileStream(targetPdf, FileMode.Create))
    {
        Document document = new Document();
        PdfCopy pdf = new PdfCopy(document, stream);
        PdfReader reader = null;
        try
        {
            document.Open();
            foreach (var file in fileNames)
            {
                reader = new PdfReader(file);
                pdf.AddDocument(reader);
                reader.Close();
            }
        }
        catch (Exception)
        {
            // merged = "false";
            if (reader != null) reader.Close();
        }
        finally
        {
            if (document != null)
            {
                Console.WriteLine("Closing document.");
                document.Close(); // exits here
                Console.WriteLine("Document closed.");
            }
        }
    }
    return merged;
}

Выходные данные в отладчике:

...
Closing document.
The program has exited with code 0 (0x0)

1 Ответ

0 голосов
/ 24 мая 2018

Распечатано исключение через блок catch, но оно никогда не было достигнуто.Блок try успешно выполнен.Удаление try / catch / finally блокирует «исправленную» проблему.

Это только частичное исправление, поскольку больше нет способа обрабатывать ошибки.

public static string MergePDFs(List<string> fileNames, ref string targetPdf)
{

    string merged = "";

    using (FileStream stream = new FileStream(targetPdf, FileMode.Create))
    {

        Document document = new Document();
        PdfCopy pdf = new PdfCopy(document, stream);
        PdfReader reader = null;

        document.Open();

        foreach (var file in fileNames)
        {
            reader = new PdfReader(file);
            pdf.AddDocument(reader);
            reader.Close();
        }

        document.Close();

    }

    return merged;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...