AccessViolationException Bei Formulaverarbeitung (c0000005)

This article was translated from English: Does it need improvement?
Translated
View the article in English

Während der Verarbeitung von PDF-Formularen kann IronPDF eine gelegentliche einheimische AccessViolationException (Code c0000005) werfen, die sich nicht zuverlässig reproduzieren lässt, selbst bei derselben Eingabedatei. Sie tritt am häufigsten auf, wenn Sie auf PdfDocument.Form zugreifen und während PdfDocument.Flatten und PdfDocument.Merge.

AccessViolationException (0xc0000005)
bad conversion while widening narrow string

Der Absturz kommt von der Interaktion zwischen nativen Formular-Feld-Handles und verwalteter Objektlebensdauer. Wenn die PdfDocument Müll gesammelt oder entsorgt wird, während nativen Formularoperationen noch im Gange sind, greift die native Schicht auf Speicher zu, der bereits freigegeben wurde, was die Zugriffsverletzung produziert.

Die wiederholten "schlechte Konvertierung beim Erweitern von schmalen Zeichenfolgen"-Warnungen sowie Warnungen über das Entfernen von Formularfeld-Anmerkungen während der Flachstellung sind ein separates und harmloses Symptom. Sie stammen aus der Dekodierung von internen AcroForm-Feldzeichenfolgen und Metadaten, die japanische oder Multibyte-Zeichen in einem gegebenen PDF enthalten. Sie deuten nicht auf ein Problem mit japanischer oder allgemeiner Unicode-Unterstützung hin, noch mit japanischen UNC-Dateipfaden.

Lösung

1. Halten Sie das Dokument für die gesamte Operation am Leben

Empfohlen: halten Sie die PdfDocument im Umfang für die gesamte Dauer der Formularverarbeitung. Wickeln Sie es in einen Using-Block, sodass die Lebensdauer explizit wird, und rufen Sie anschließend GC.KeepAlive(doc) nach der Formularfeld-Schleife auf, bevor das Dokument entsorgt wird.

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
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
VB .NET

GC.KeepAlive(doc) stoppt die Laufzeit davon, das Dokument zu sammeln, während native Formularoperationen noch ausgeführt werden, und schließt das Fenster, in dem der native Code auf freigegebenen Speicher zugreifen kann.

2. Entfernen Sie manuelle GC.Collect() Aufrufe

Löschen Sie alle GC.Collect() Aufrufe während der PDF- und Formularverarbeitung. Das Erzwingen der Sammlung mitten in der Operation kann genau das Lebensdauerproblem auslösen, das den Absturz verursacht.

3. Nur x64 anvisieren

Setzen Sie das Projektplattformziel explizit auf x64 und stellen Sie sicher, dass Bevorzugt 32-Bit deaktiviert ist. Das Ausführen als x64 vermeidet die Einschränkungen eines 32-Bit-Prozesses während der nativen Formulararbeit.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 20,296,129 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPdf
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.