Sporadischer Aussetzer / Steckenbleiben bei LL.Export()

Hallo Community und Team,

wir haben das Problem, das die Export Funktion von LL24 sporadisch innerhalb des Export stehen bleibt und die Funktion auch nicht verlässt. Keine Exceptiones oder Fehler.
So instanziieren wir bei jedem Durchlauf und lassen immer zwischen 100 und 5000 PDFs exportieren. Bei erneutem durchlaufen des letzten Exportes kommt es nicht dazu. Somit ist das Problem unabhängig der Daten bzw. der Menge der Durchläufe.

            Dim LL As ListLabel = Nothing
            Dim ExportConfig As ExportConfiguration = New ExportConfiguration(LlExportTarget.Pdf, ExportPfad, VorlagenPfadMitDateiname)
        
            LL = New ListLabel()
            LL.LicensingInfo = ****
            LL.ExportOptions.Add("Export.Quiet", "1")
            LL.Core.LlSetOption(LlOption.ProhibitUserInteraction, 1)
            ...
           For ...
           Update_PrintParams(...)
            LL.SetDataBinding(_PrintParams.ds, _PrintParams.MemberName)
            If (_PrintParams.MasterMode = 1) Then LL.AutoMasterMode = LlAutoMasterMode.AsVariables
            If Not String.IsNullOrEmpty(_PrinterSetting.PrinterName) Then LL.Core.LlSetPrinterInPrinterFile(LlProject.List, _PrintParams.vorlagenpfad, LlPrinterIndex.AllPages, _PrinterSetting)
            ...
            LL.Export(ExportConfig)  <<<!!!! Hier bleibt er sporadisch stecken, ohne Fehler, unabhängig einer Durchlaufanzahl,  aber meistens nach mehr als 1000 Exporten. 
            Next...            

Eine Versionsaktualisieren kann momentan nicht umgesetzt werden.

Diesbezüglich stellen sich mir folgende Fragen:

Ist ein solches Verhalten bekannt?
Ist es möglich weitere Logging Informationen zu bekommen um dem Problem näher zu kommen? Und ist ein Timeout für die Exportfunktion möglich, damit diese nicht „hängt“ ?

Gruß und vielen Dank im Vorraus.

Christian Dannenberg

Hallo!

Ja, frisch ist die Version 24 nicht gerade. Aber ein paar Ideen hätte ich dazu vorab:

  • Was sagt denn die Systemleistung zu diesem betreffenden Zeitpunkt? Speicherverbrauch? CPU-Last? GDI-Handles/Handles?
  • Findet sich im Logfile mit Debwin etwas spannendes oder auffälliges zum betreffenden Zeitpunkt?
  • Betrifft das nur den PDF-Export oder ist das auch bei einem Export auf das Vorschauformat (*.ll - LlExportTarget.Preview) bspw. auch schon mal beobachtet worden?
  • Ohne den ganzen Code zu sehen/kennen: Aber es scheint alles im gleichen Haupt-Thread abzulaufen wie das aussieht mit dem einen einzigen LL-Objekt oder ist das verteilt in Threads “irgendwie”? Worauf ich gezielt hinaus will ist ein Schutz-Job, der nichts macht (kein Druck/Export etc.). Und für den eigentlichen Export-Vorgang dann ein gesondertes Objekt verwendet wird.

Hallo zurück,

  • Was sagt denn die Systemleistung zu diesem betreffenden Zeitpunkt? Speicherverbrauch? CPU-Last? GDI-Handles/Handles?

Alles im normalen Bereich, keine erkennbare Last, kein sprunghafter Speicheranstieg.

  • Findet sich im Logfile mit Debwin etwas spannendes oder auffälliges zum betreffenden Zeitpunkt?

Wird momentan nicht genutzt. Würde ich nun aber entsprechend mal mitlaufen lassen.

  • Betrifft das nur den PDF-Export oder ist das auch bei einem Export auf das Vorschauformat (*.ll - LlExportTarget.Preview) bspw. auch schon mal beobachtet worden?

Wird nicht genutzt, daher kann ich hier keine Aussage zu machen.

  • Ohne den ganzen Code zu sehen/kennen: Aber es scheint alles im gleichen Haupt-Thread abzulaufen wie das aussieht mit dem einen einzigen LL-Objekt oder ist das verteilt in Threads “irgendwie”?

Alles im Haupt-Thread, da es mit verteilten Threads zu Problemen kam. Man könnte es aber auf einen einzigen seperaten Thread auslagern, damit man darin, LL zurücksetzen kann, wenn es länger als erwartet läuft. Würde in die Richtung Timeout gehen.

Ich würde mal den Debwin nutzen, da es aber sporandisch passiert, könnte es damit dauern, bis es zum Problemfall kommt.

Es kommt nur ca. 1x pro Woche vor.

Danke für den Hinweis.

Kann man die LL Statusausgabe auch in eine Logdatei leiten ?

Edit: Gefunden …ILlLogger()