IRONSOFTWAREHOME

AccessViolationException podczas przetwarzania formularzy (c0000005)

Curtis Chau
Curtis Chau
Updated: 3 lipca 2026

Podczas przetwarzania formularzy PDF, IronPDF może wyrzucić sporadyczny natywny AccessViolationException (kod c0000005), który nie jest niezawodnie reprodukowany, nawet na tym samym pliku wejściowym. Najczęściej pojawia się, gdy uzyskujesz dostęp do PdfDocument.Form oraz podczas PdfDocument.Flatten i PdfDocument.Merge.

AccessViolationException (0xc0000005)
bad conversion while widening narrow string
Text

Awaria wynika z interakcji między natywnymi uchwytami pól formularza a cyklem życia zarządzanych obiektów. Jeśli PdfDocument zostanie poddany zbieraniu pamięci śmieciowej lub zutylizowany podczas gdy natywne operacje na formularzach są nadal wykonywane, warstwa natywna uzyskuje dostęp do pamięci, która została już zwolniona, co powoduje naruszenie dostępu.

Powtarzające się ostrzeżenia o 'złej konwersji podczas poszerzania wąskiego ciągu znaków', wraz z ostrzeżeniami o usuwaniu adnotacji pól formularza podczas spłaszczania, są oddzielnym i nieszkodliwym symptomem. Pochodzą one z dekodowania wewnętrznych ciągów znaków AcroForm i metadanych, które zawierają japońskie lub wielobajtowe znaki w danym PDF. Nie wskazują one na problem z ogólnym wsparciem dla japońskiego lub Unicode, ani z japońskimi ścieżkami plików UNC.

Rozwiązanie

1. Utrzymuj dokument aktywny przez cały czas operacji

Zalecane: trzymaj PdfDocument w zasięgu przez cały czas przetwarzania formularza. Umieść go w bloku Using, aby jego czas życia był jawny, a następnie wywołaj GC.KeepAlive(doc) po pętli pól formularza, przed zutylizowaniem dokumentu.

Using doc As IronPdf.PdfDocument = IronPdf.PdfDocument.FromFile(tempPdfPath)
    For Each field In doc.Form
        ' Your form field processing here
    Next
    GC.KeepAlive(doc)
End Using
Text

GC.KeepAlive(doc) powstrzymuje środowisko uruchomieniowe przed zebraniem dokumentu, gdy natywne operacje na formularzach są nadal uruchomione, zmykając okno, w którym kod natywny może uzyskać dostęp do zwolnionej pamięci.

2. Usuń ręczne wywołania GC.Collect()

Usuń wszystkie wywołania GC.Collect() podczas przetwarzania PDF i formularzy. Wymuszona kolekcja w trakcie operacji może wywołać dokładnie ten problem z cyklem życia, który powoduje awarię.

3. Celuj tylko w x64

Ustaw cel platformy projektu wyraźnie na x64, upewnij się, że Preferuj 32-bitowy jest wyłączony. Uruchomienie jako x64 unika ograniczeń procesu 32-bitowego podczas pracy z natywnymi formularzami.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 21,253,952Wersja:2026.10właśnie wydany

Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.10

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz opcję Przeglądaj i wyszukaj „IronPdf”
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.10

lub pobierz instalator Windows tutaj.

  1. Pobierz i rozpakuj IronPDF do lokalizacji takiej jak ~/Libs w katalogu Solution
  2. W Eksploratorze rozwiązań programu Visual Studio kliknij prawym przyciskiem myszy opcję Odwołania. Wybierz opcję Przeglądaj, „IronPdf.dll”

Licencje od 999 USD

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Twoje dane zawsze będą utrzymywane w tajemnicy.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Zaufane przez miliony inżynierów na całym świecie
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.10

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz opcję Przeglądaj i wyszukaj „IronPdf”
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.10

lub pobierz instalator Windows tutaj.

  1. Pobierz i rozpakuj IronPDF do lokalizacji takiej jak ~/Libs w katalogu Solution
  2. W Eksploratorze rozwiązań programu Visual Studio kliknij prawym przyciskiem myszy opcję Odwołania. Wybierz opcję Przeglądaj, „IronPdf.dll”

Licencje od 999 USD