Verbesserung der Dokumentfreigabe und Fehlerbehandlung
Die Freigabe von Dokumenten wurde zentralisiert, indem
`PRTF_PROFILE_FILES_WORK("FreeFile")` an mehreren Stellen
hinzugefügt wurde. Dies stellt sicher, dass Ressourcen
konsistent freigegeben werden, insbesondere vor dem
Schließen des Formulars oder bei Fehlern.
Die SQL-Logik für das Löschen von Einträgen in
`TBPM_DOCWALKOVER` wurde vereinfacht, und redundante
SQL-Aufrufe wurden entfernt. Die Funktion
`PRTF_PROFILE_FILES_WORK` wurde robuster gestaltet, indem
sie nur bei gültigen Dokument-IDs eine Abfrage ausführt.
Ein Fix wurde implementiert, um Grid-Events sofort zu
deregistrieren und potenzielle Zugriffe auf freigegebene
UI-Objekte zu verhindern. Zusätzlich wurden nicht mehr
benötigte Codezeilen entfernt, um die Lesbarkeit und
Wartbarkeit zu verbessern.
This commit is contained in:
@@ -720,6 +720,11 @@ Public Class frmValidator
|
|||||||
_isClosingGuard = True
|
_isClosingGuard = True
|
||||||
_FormClosing = True
|
_FormClosing = True
|
||||||
|
|
||||||
|
' KRITISCH: Dokument freigeben bevor Form schließt
|
||||||
|
If Current_Document IsNot Nothing Then
|
||||||
|
PRTF_PROFILE_FILES_WORK("FreeFile")
|
||||||
|
End If
|
||||||
|
|
||||||
' ===== 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
|
||||||
' nach DocumentViewer.Done() auf bereits freigegebene UI-Objekte zu.
|
' nach DocumentViewer.Done() auf bereits freigegebene UI-Objekte zu.
|
||||||
@@ -808,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)
|
||||||
@@ -4388,7 +4387,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()
|
||||||
@@ -8049,9 +8048,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...")
|
||||||
@@ -8104,8 +8102,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
|
||||||
@@ -8444,11 +8447,8 @@ Public Class frmValidator
|
|||||||
' ========== ENDE DIAGNOSE ==========
|
' ========== ENDE DIAGNOSE ==========
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Datei_ueberspringen()
|
Datei_ueberspringen()
|
||||||
|
|
||||||
|
|
||||||
If LOG_HOTSPOTS Then
|
If LOG_HOTSPOTS Then
|
||||||
MyValidationLogger.Info($"[PERF] Nach Datei_ueberspringen: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
MyValidationLogger.Info($"[PERF] Nach Datei_ueberspringen: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||||
' ========== DIAGNOSE: Nach Datei_ueberspringen ==========
|
' ========== DIAGNOSE: Nach Datei_ueberspringen ==========
|
||||||
@@ -8710,6 +8710,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
|
||||||
@@ -8789,7 +8790,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)
|
||||||
|
|||||||
Reference in New Issue
Block a user