Fehlerbehandlung und Fortschrittsanzeige verbessert

Die Verarbeitung von Dateien wurde robuster gestaltet:
- Neue Variable `_SkippedFilesCount` zur Zählung übersprungener Dateien.
- Verbesserte Fehlerbehandlung bei fehlenden oder fehlerhaften Dokumenten:
  - Warnungen und detaillierte Logs bei Fehlern.
  - Fortschritt wird auch bei übersprungenen Dateien aktualisiert.
- Fortschrittsanzeige (`ProgressChanged`) angepasst:
  - `(Übersprungen)` bei fehlendem Dokument.
  - `(Dateiname leer)` bei leerem Dateinamen.
  - `(Fehler beim Laden)` bei Fehlern während des Ladens.
- Fortschrittsbalken (`ProgressBar1` und `ProgressBar2`) aktualisiert, um übersprungene Dateien korrekt darzustellen.
- Warnung am Ende des Profil-Durchlaufs, wenn Dateien übersprungen wurden.
This commit is contained in:
Developer01
2026-07-07 17:17:02 +02:00
parent 8f38212ae4
commit 4e72f0a10a
7 changed files with 61 additions and 16 deletions

View File

@@ -313,8 +313,11 @@ Public Class frmNIHauptseite
' e.Cancel = True
'End If
Dim _Fehler As Boolean = False
Dim _SkippedFilesCount As Integer = 0 ' ← Neu hinzufügen
For Each profil As ClassNIProfil In ClassNIProfile.Profile
_Fehler = False
_SkippedFilesCount = 0
' aktuelles Profil der Klasse mitteilen
Me.aktivesProfil = profil
_clsWorkfile = New clsNI_WorkFile(_MyLogger)
@@ -501,42 +504,62 @@ Public Class frmNIHauptseite
'Dim _dok As WMObject
'_dok = Nothing
Try
' Wichtig: aktivesDokument zurücksetzen
aktivesDokument = Nothing
aktivesDokument = _windreamNI.oWMSession.GetWMObjectByPath(ConstWMEntityDocument, oFilenameWM)
Catch ex As Exception
_Logger.Warn($"ATTENTION: error while creating a windream-object via objectpath - ERROR [{ex.InnerException.Message}]")
_Logger.Warn($"Filename [{oFilenameWM}]")
_Logger.Error(ex)
bwProfil.ReportProgress(-4)
Exit Sub
End Try
If Not IsNothing(aktivesDokument) Then
If IsNothing(aktivesDokument) Then
_Logger.Warn($"ATTENTION: Could not create WMObject for path [{oFilenameWM}] - Object is Nothing. Skipping file...")
bwProfil.ReportProgress(-1) ' Fortschritt dennoch erhöhen
Continue For ' Nächste Datei
End If
_Logger.Debug($"..Got a windream-document-object for {aktivesDokument.aName}...")
i += 1
'####### Go für das Dokument ##########
' Thread für diese Datei starten
Me.startDateiDurchlauf()
'######################################
' solange der Datei-Thread noch nicht abgeschlossen wurde
While Me.bwDatei.IsBusy
End While
' nächste Datei an ProgressBar2
bwProfil.ReportProgress(-1)
oWorkCount += 1
' Vorgang abbrechen
If bwProfil.CancellationPending Then
_Logger.Info($"bwProfil.CancellationPending...Exit bwProfil_DoWork")
Exit Sub
ElseIf manually_cancel = True Then
_Logger.Info($"manually_cancel...Exit bwProfil_DoWork")
Exit Sub
End If
Else
_Logger.Error("Could not create a WMDocument via path!")
End If
Catch ex As Exception
' Fehler bei einzelner Datei - loggen und weitermachen
_Logger.Warn($"ATTENTION: Error processing document from path [{oFilenameWM}]")
_Logger.Warn($"Error: {ex.Message}")
If ex.InnerException IsNot Nothing Then
_Logger.Warn($"InnerException: {ex.InnerException.Message}")
End If
_Logger.Error(ex)
Dim oLineNumber = GetLineNumber(ex)
If oLineNumber > 0 Then
_Logger.Warn($"#### Line Number: {oLineNumber} ####")
End If
_SkippedFilesCount += 1 ' ← Zähler erhöhen
' Fortschritt trotzdem erhöhen
bwProfil.ReportProgress(-1)
' Weiter mit nächster Datei
_Logger.Info($"Skipping file and continuing with next document...")
Continue For
End Try
Next
Else
_Logger.Error("ATTENTION: _windreamNI not intitialized properly...")
@@ -587,6 +610,9 @@ Public Class frmNIHauptseite
End If
End If
If _SkippedFilesCount > 0 Then
_Logger.Warn($"#### Profile completed with {_SkippedFilesCount} skipped file(s) due to errors ####")
End If
_Logger.Info("####################################################End Profile DoWork####")
' nächstes Profil an ProgressBar1
bwProfil.ReportProgress(-2)
@@ -640,7 +666,26 @@ Public Class frmNIHauptseite
ElseIf e.ProgressPercentage = -2 Then
Me.ProgressBar1.Value += 1
ElseIf e.ProgressPercentage = -1 Then
Me.lblDatei.Text = Me.aktivesDokument.aName
Try
If Not IsNothing(Me.aktivesDokument) Then
Dim docName As String = Me.aktivesDokument.aName
If Not String.IsNullOrEmpty(docName) Then
Me.lblDatei.Text = docName
Else
Me.lblDatei.Text = "(Dateiname leer)"
End If
Else
' Wenn aktivesDokument Nothing ist, dann war es ein Skip
Me.lblDatei.Text = "(Übersprungen)"
End If
Catch ex As Exception
' Nur bei echtem Fehler
Me.lblDatei.Text = "(Fehler beim Laden)"
_Logger.Debug($"Error in ProgressChanged: {ex.Message}")
End Try
Me.ProgressBar2.Value += 1
Me.ProgressBar2.Value += 1
Else
Me.ProgressBar2.Minimum = 0