Fix: Konsistente Freigabe von Dateien vor Aktionen

Ein kritischer Fix wurde implementiert, um sicherzustellen, dass die Methode `PRTF_PROFILE_FILES_WORK("FreeFile")` in verschiedenen Szenarien aufgerufen wird, bevor Aktionen abgeschlossen werden. Dies verhindert potenzielle Probleme mit asynchronen Prozessen und freigegebenen UI-Objekten.

- Direkte SQL-Strings zur Freigabe von Dateien wurden entfernt und durch die Methode `PRTF_PROFILE_FILES_WORK("FreeFile")` ersetzt, um die Lesbarkeit und Wartbarkeit zu verbessern.
- Zusätzliche Aufrufe von `PRTF_PROFILE_FILES_WORK("FreeFile")` wurden in Fehlerbehandlungsblöcke und Workflow-Schritte integriert, um die Stabilität zu erhöhen.
- Die Methode `PRTF_PROFILE_FILES_WORK` wurde angepasst, um unnötige Datenbankaufrufe zu vermeiden, wenn `CURRENT_DOC_ID` gleich 0 ist.
- Einheitliche Handhabung der Datei-Freigabe in verschiedenen Kontexten wie Dokumentüberspringen und Kommentarverarbeitung.

Diese Änderungen verbessern die Stabilität und Konsistenz der Anwendung erheblich.

V 2.9.6
This commit is contained in:
Developer01
2026-08-05 13:13:58 +02:00
parent de80d564b1
commit cee6a11c99
2 changed files with 16 additions and 15 deletions

View File

@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.9.5.0")> <Assembly: AssemblyVersion("2.9.6.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")> <Assembly: AssemblyFileVersion("1.0.0.0")>
<Assembly: NeutralResourcesLanguage("")> <Assembly: NeutralResourcesLanguage("")>

View File

@@ -722,6 +722,8 @@ Public Class frmValidator
End If End If
_isClosingGuard = True _isClosingGuard = True
_FormClosing = True _FormClosing = True
' KRITISCH: Dokument freigeben bevor Form schließt
PRTF_PROFILE_FILES_WORK("FreeFile")
' ===== FIX: Grid-Events SOFORT deregistrieren ===== ' ===== FIX: Grid-Events SOFORT deregistrieren =====
' Der GridControl-Lambda läuft noch asynchron weiter und greift sonst ' Der GridControl-Lambda läuft noch asynchron weiter und greift sonst
@@ -811,13 +813,7 @@ Public Class frmValidator
Try Try
Dim oSQL As String Dim oSQL As String
If CURRENT_DOC_GUID <> 0 Then oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};"
Dim oPRoc = String.Format("EXEC PRTF_PROFILE_FILES_WORK {0},{1},{2},'FreeFile';", CURRENT_DOC_ID, CURRENT_ProfilGUID, USER_ID)
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};" & vbCrLf & oPRoc
Else
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};"
End If
DatabaseFallback.ExecuteNonQueryECM(oSQL) DatabaseFallback.ExecuteNonQueryECM(oSQL)
Catch ex As Exception Catch ex As Exception
MyValidationLogger.Error(ex) MyValidationLogger.Error(ex)
@@ -4489,7 +4485,7 @@ Public Class frmValidator
MyValidationLogger.Error(ex) MyValidationLogger.Error(ex)
errormessage = "unexpected error in Load_Next_Document:" & ex.Message errormessage = "unexpected error in Load_Next_Document:" & ex.Message
My.Settings.Save() My.Settings.Save()
PRTF_PROFILE_FILES_WORK("FreeFile")
MyValidationLogger.Info("unexpected error in Load_Next_Document: " & ex.Message) MyValidationLogger.Info("unexpected error in Load_Next_Document: " & ex.Message)
frmError.ShowDialog() frmError.ShowDialog()
@@ -8253,9 +8249,8 @@ Public Class frmValidator
Try Try
MyValidationLogger.Debug("Skipping document....(Datei_ueberspringen)") MyValidationLogger.Debug("Skipping document....(Datei_ueberspringen)")
Dim oPRoc = String.Format("EXEC PRTF_PROFILE_FILES_WORK {0},{1},{2},{3}", CURRENT_DOC_ID, CURRENT_ProfilGUID, USER_ID, "FreeFile") PRTF_PROFILE_FILES_WORK("FreeFile")
Dim oSQL = oPRoc & vbCrLf & Dim oSQL = $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{DocPathWindows}',{CURRENT_DOC_GUID};"
$"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{DocPathWindows}',{CURRENT_DOC_GUID};"
If LOG_HOTSPOTS Then If LOG_HOTSPOTS Then
' ========== DIAGNOSE: Vor DB-Execute ========== ' ========== DIAGNOSE: Vor DB-Execute ==========
MyValidationLogger.Info($"[INFO] Führe DB-UPDATE aus...") MyValidationLogger.Info($"[INFO] Führe DB-UPDATE aus...")
@@ -8308,8 +8303,13 @@ Public Class frmValidator
End Sub End Sub
Private Function PRTF_PROFILE_FILES_WORK(ByVal pMode As String) As Boolean Private Function PRTF_PROFILE_FILES_WORK(ByVal pMode As String) As Boolean
Try Try
Dim sql = $"EXEC PRTF_PROFILE_FILES_WORK {CURRENT_DOC_ID},{CURRENT_ProfilGUID},{USER_ID},'{pMode}'" If CURRENT_DOC_ID <> 0 Then
Return DatabaseFallback.ExecuteNonQueryECM(sql) Dim sql = $"EXEC PRTF_PROFILE_FILES_WORK {CURRENT_DOC_ID},{CURRENT_ProfilGUID},{USER_ID},'{pMode}'"
Return DatabaseFallback.ExecuteNonQueryECM(sql)
Else
Return False
End If
Catch ex As Exception Catch ex As Exception
MyValidationLogger.Error(ex) MyValidationLogger.Error(ex)
Return False Return False
@@ -8936,6 +8936,7 @@ Public Class frmValidator
oNoError = IDBData.SetVariableValue(PROFIL_REJECT_COMMENT_ATTRIBUTE, frmRejCommit.pRejection_Comment) oNoError = IDBData.SetVariableValue(PROFIL_REJECT_COMMENT_ATTRIBUTE, frmRejCommit.pRejection_Comment)
End If End If
End If End If
PRTF_PROFILE_FILES_WORK("FreeFile")
If oNoError Then If oNoError Then
REJECTION_ACTIVE = True REJECTION_ACTIVE = True
If Check_UpdateIndexe() = True Then If Check_UpdateIndexe() = True Then
@@ -9015,7 +9016,7 @@ Public Class frmValidator
' End If ' End If
' End If ' End If
'Next 'Next
PRTF_PROFILE_FILES_WORK("FreeFile")
If IDB_ACTIVE = False Then If IDB_ACTIVE = False Then
Indexiere_File(CURRENT_WMFILE, PROFIL_NOT_RESP_COMMENT_ATTR, frmDialog.oComment) Indexiere_File(CURRENT_WMFILE, PROFIL_NOT_RESP_COMMENT_ATTR, frmDialog.oComment)