From cee6a11c997cd280234c09125407e746fa2c5096 Mon Sep 17 00:00:00 2001 From: Developer01 Date: Wed, 5 Aug 2026 13:13:58 +0200 Subject: [PATCH] Fix: Konsistente Freigabe von Dateien vor Aktionen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- app/TaskFlow/My Project/AssemblyInfo.vb | 2 +- app/TaskFlow/frmValidator.vb | 29 +++++++++++++------------ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/app/TaskFlow/My Project/AssemblyInfo.vb b/app/TaskFlow/My Project/AssemblyInfo.vb index 1c522ce..a3e23b2 100644 --- a/app/TaskFlow/My Project/AssemblyInfo.vb +++ b/app/TaskFlow/My Project/AssemblyInfo.vb @@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + diff --git a/app/TaskFlow/frmValidator.vb b/app/TaskFlow/frmValidator.vb index d00a58d..3c044eb 100644 --- a/app/TaskFlow/frmValidator.vb +++ b/app/TaskFlow/frmValidator.vb @@ -722,6 +722,8 @@ Public Class frmValidator End If _isClosingGuard = True _FormClosing = True + ' KRITISCH: Dokument freigeben bevor Form schließt + PRTF_PROFILE_FILES_WORK("FreeFile") ' ===== FIX: Grid-Events SOFORT deregistrieren ===== ' Der GridControl-Lambda läuft noch asynchron weiter und greift sonst @@ -811,13 +813,7 @@ Public Class frmValidator Try Dim oSQL As String - If CURRENT_DOC_GUID <> 0 Then - 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 - + oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};" DatabaseFallback.ExecuteNonQueryECM(oSQL) Catch ex As Exception MyValidationLogger.Error(ex) @@ -4489,7 +4485,7 @@ Public Class frmValidator MyValidationLogger.Error(ex) errormessage = "unexpected error in Load_Next_Document:" & ex.Message My.Settings.Save() - + PRTF_PROFILE_FILES_WORK("FreeFile") MyValidationLogger.Info("unexpected error in Load_Next_Document: " & ex.Message) frmError.ShowDialog() @@ -8253,9 +8249,8 @@ Public Class frmValidator Try 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") - Dim oSQL = oPRoc & vbCrLf & - $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{DocPathWindows}',{CURRENT_DOC_GUID};" + PRTF_PROFILE_FILES_WORK("FreeFile") + Dim oSQL = $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{DocPathWindows}',{CURRENT_DOC_GUID};" If LOG_HOTSPOTS Then ' ========== DIAGNOSE: Vor DB-Execute ========== MyValidationLogger.Info($"[INFO] Führe DB-UPDATE aus...") @@ -8308,8 +8303,13 @@ Public Class frmValidator End Sub Private Function PRTF_PROFILE_FILES_WORK(ByVal pMode As String) As Boolean Try - Dim sql = $"EXEC PRTF_PROFILE_FILES_WORK {CURRENT_DOC_ID},{CURRENT_ProfilGUID},{USER_ID},'{pMode}'" - Return DatabaseFallback.ExecuteNonQueryECM(sql) + If CURRENT_DOC_ID <> 0 Then + 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 MyValidationLogger.Error(ex) Return False @@ -8936,6 +8936,7 @@ Public Class frmValidator oNoError = IDBData.SetVariableValue(PROFIL_REJECT_COMMENT_ATTRIBUTE, frmRejCommit.pRejection_Comment) End If End If + PRTF_PROFILE_FILES_WORK("FreeFile") If oNoError Then REJECTION_ACTIVE = True If Check_UpdateIndexe() = True Then @@ -9015,7 +9016,7 @@ Public Class frmValidator ' End If ' End If 'Next - + PRTF_PROFILE_FILES_WORK("FreeFile") If IDB_ACTIVE = False Then Indexiere_File(CURRENT_WMFILE, PROFIL_NOT_RESP_COMMENT_ATTR, frmDialog.oComment)