Async Loading of Profile Documents and Monitor Data

This commit is contained in:
Jonathan Jenne 2020-10-27 13:46:16 +01:00
parent 3444229697
commit 179c71d667
3 changed files with 74 additions and 52 deletions

View File

@ -1,5 +1,7 @@
Imports System.Data.SqlClient
Imports Oracle.ManagedDataAccess.Client
Imports System.Threading.Tasks
Public Class ClassDatabase
Private Shared SQLSERVERConnectionString As String
Private Shared OracleConnectionString As String
@ -57,7 +59,7 @@ Public Class ClassDatabase
End Try
End Function
Public Shared Function Return_Datatable(pSQLCommand As String, Optional pInfo As String = "")
Public Shared Function Return_Datatable(pSQLCommand As String, Optional pInfo As String = "") As DataTable
Try
If pInfo <> "" Then
pInfo = "[" & pInfo & "]"
@ -80,6 +82,13 @@ Public Class ClassDatabase
Return Nothing
End Try
End Function
Public Shared Async Function Return_DatatableAsync(pSQLCommand As String, Optional pInfo As String = "") As Task(Of DataTable)
Return Await Task.Run(Function()
Return Return_Datatable(pSQLCommand, pInfo)
End Function)
End Function
Public Shared Function Return_Datatable_ConId(pSQLCommand As String, ConnID As Integer, Optional pInfo As String = "")
Try
If pInfo <> "" Then

View File

@ -13,7 +13,6 @@ Imports System.Threading
Imports System.ComponentModel
Imports System.IO
Imports System.Drawing.Imaging
Imports Microsoft.Office.Interop
Imports DevExpress.XtraPrinting
Public Class frmMain
@ -553,7 +552,7 @@ Public Class frmMain
End Try
oStopWatch.Done()
End Sub
Private Sub navBar_LinkClicked(ByVal sender As Object, ByVal e As NavBarLinkEventArgs)
Private Async Sub navBar_LinkClicked(ByVal sender As Object, ByVal e As NavBarLinkEventArgs)
' Das aktuelle Layout speichern, bevor das neue geladen wird
' und GRID_LOAD_TYPE gesetzt wird.
SaveGridLayout()
@ -567,7 +566,10 @@ Public Class frmMain
CURRENT_CLICKED_PROFILE_ID = _tag
CURRENT_CLICKED_PROFILE_TITLE = e.Link.Item.Caption
GRID_LOAD_TYPE = "PROFILE#" & CURRENT_CLICKED_PROFILE_ID.ToString
Load_single_Profile()
GridView_Docs.ShowLoadingPanel()
Await Load_single_Profile()
GridView_Docs.HideLoadingPanel()
End If
End If
@ -602,9 +604,7 @@ Public Class frmMain
End Try
End Sub
Sub Load_single_Profile()
Async Function Load_single_Profile() As Tasks.Task
Try
Load_Profiles_for_User()
Layout_Single_Profile()
@ -631,7 +631,9 @@ Public Class frmMain
sql = sql.Replace("@MACHINE_NAME", Environment.MachineName)
sql = sql.Replace("@DATE", Now.ToShortDateString)
sql = sql.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
CURR_DT_OVERVIEW = ClassDatabase.Return_Datatable(sql, "Load_single_Profile")
CURR_DT_OVERVIEW = Await ClassDatabase.Return_DatatableAsync(sql, "Load_single_Profile")
If CURR_DT_OVERVIEW.Rows.Count = 0 Then
NO_WORKFLOWITEMS = True
Else
@ -648,7 +650,7 @@ Public Class frmMain
LOGGER.Info("Load_single_Profile - Error: " & ex.Message)
End Try
End Sub
End Function
Sub Create_Basic_View()
Try
GridControl_Docs.DataSource = Nothing
@ -867,7 +869,7 @@ Public Class frmMain
Me.BringToFront()
Visible = True
End Sub
Private Sub Timer_Tick(sender As System.Object, e As EventArgs) Handles TimerRefresh.Tick
Private Async Sub Timer_Tick(sender As System.Object, e As EventArgs) Handles TimerRefresh.Tick
Try
If TimerRefresh.Enabled = False Then
Exit Sub
@ -907,7 +909,7 @@ Public Class frmMain
LoadNavBar()
'bwSync.ReportProgress(60)
Dim oStopWatch As New RefreshHelper.SW("Decide_Load")
Decide_Load(False)
Await Decide_Load(False)
oStopWatch.Done()
'bwSync.ReportProgress(95)
If USER_LANGUAGE <> "de-DE" Then
@ -935,23 +937,27 @@ Public Class frmMain
Private Sub NotifyIcon1_Click(sender As System.Object, e As EventArgs) Handles NotifyIcon1.Click
BringMonitor2Front()
End Sub
Private Sub Decide_Load(FormLoad As Boolean)
Private Async Function Decide_Load(FormLoad As Boolean) As Tasks.Task
Try
GridIsLoaded = False
If USER_EXISTS = False Then
Exit Sub
Exit Function
End If
If TimerRefresh.Enabled = True Then
TimerRefresh.Enabled = False
End If
GridView_Docs.ShowLoadingPanel()
If GRID_LOAD_TYPE = "OVERVIEW" Then
Load_Grid_Overview(FormLoad)
Await Load_Grid_Overview(FormLoad)
ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then
Load_single_Profile()
Await Load_single_Profile()
End If
GridView_Docs.HideLoadingPanel()
If SHOW_MASS_VALIDATOR = False Then
GridView_Docs.OptionsSelection.MultiSelect = False
GridView_Docs.OptionsSelection.MultiSelectMode = GridMultiSelectMode.RowSelect
@ -974,7 +980,7 @@ Public Class frmMain
If TimerRefresh.Enabled = False Then
TimerRefresh.Enabled = True
End If
End Sub
End Function
Private Sub ToolStripButton2_Click_2(sender As Object, e As EventArgs)
@ -1326,7 +1332,7 @@ Public Class frmMain
Return False
End Try
End Function
Private Sub tsmiMarkedFilesFinish_Click(sender As Object, e As EventArgs) Handles tsmiMarkedFilesFinish.Click
Private Async Sub tsmiMarkedFilesFinish_Click(sender As Object, e As EventArgs) Handles tsmiMarkedFilesFinish.Click
Try
Dim oSelectedRows As Integer() = GridView_Docs.GetSelectedRows()
Dim oHitInfo As GridHitInfo = GridView_Docs.CalcHitInfo(GridCursorLocation)
@ -1399,7 +1405,7 @@ Public Class frmMain
TimerRefresh.Enabled = False
frmMassValidator.ShowDialog()
LoadNavBar()
Decide_Load(False)
Await Decide_Load(False)
Else
If USER_LANGUAGE = "de-DE" Then
MsgBox("Massenabschluss konnte nicht ausgeführt werden, weil windream nicht initialisiert werden konnte!", MsgBoxStyle.Critical, "Massenabschluss")
@ -1416,14 +1422,18 @@ Public Class frmMain
Item_Scope("CMGROUP")
End Sub
Private Sub NavBarItemOverview_LinkClicked(sender As Object, e As NavBarLinkEventArgs) Handles NavBarItemOverview.LinkClicked
Private Async Sub NavBarItemOverview_LinkClicked(sender As Object, e As NavBarLinkEventArgs) Handles NavBarItemOverview.LinkClicked
' Das aktuelle Layout speichern, bevor das neue geladen wird
' und GRID_LOAD_TYPE gesetzt wird.
SaveGridLayout()
Load_Grid_Overview(False)
GridView_Docs.ShowLoadingPanel()
Await Load_Grid_Overview(False)
GridView_Docs.HideLoadingPanel()
RefreshHelper.LoadViewInfo()
End Sub
Sub Load_Grid_Overview(FormLoad As Boolean)
Async Function Load_Grid_Overview(FormLoad As Boolean) As Tasks.Task
Dim oStopWatch As New RefreshHelper.SW("Load_Grid_Overview(LGO)")
Layout_Single_Profile()
GRID_LOAD_TYPE = "OVERVIEW"
@ -1441,7 +1451,7 @@ Public Class frmMain
NO_WORKFLOWITEMS = True
bsiMessage.Caption = "Keine Profile für Ihren User hinterlegt"
oStopWatch.Done()
Exit Sub
Exit Function
End If
Dim oStopWatch1 As New RefreshHelper.SW("LGO#Load_Profiles_for_User")
Load_Profiles_for_User()
@ -1453,7 +1463,7 @@ Public Class frmMain
bsiMessage.Caption = "No GROUP-CONFIG (SQL_PROFILE_MAIN_VIEW) in Baseconfig"
oStopWatch.Done()
oStopWatch2.Done()
Exit Sub
Exit Function
End If
oSQLOverview = clsPatterns.ReplaceInternalValues(oSQLOverview)
@ -1465,11 +1475,9 @@ Public Class frmMain
oSQLOverview = oSQLOverview.Replace("@DATE", Now.ToShortDateString)
oSQLOverview = oSQLOverview.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID)
CURR_DT_OVERVIEW = ClassDatabase.Return_Datatable(oSQLOverview, "Load_Grid_Overview")
CURR_DT_OVERVIEW = Await ClassDatabase.Return_DatatableAsync(oSQLOverview, "Load_Grid_Overview")
oStopWatch2.Done()
If Not IsNothing(CURR_DT_OVERVIEW) Then
LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {CURR_DT_OVERVIEW.Rows.Count} rows")
NO_WORKFLOWITEMS = False
@ -1494,7 +1502,7 @@ Public Class frmMain
End Try
Exit Sub
Exit Function
End If
BindingNavigator1.Visible = True
@ -1661,7 +1669,7 @@ Public Class frmMain
SaveGridLayout()
If GridView_Docs.Columns.Count <= 2 Then
LOGGER.Info("GridView_Docs.Columns.Count <= 2 - Reset_Gridlayout will be forced...", False)
Reset_GridLayout(FormLoad)
Await Reset_GridLayout(FormLoad)
End If
Else
NO_WORKFLOWITEMS = True
@ -1683,7 +1691,7 @@ Public Class frmMain
LOGGER.Error(ex)
LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message)
End Try
End Sub
End Function
Private Sub tsmiValidationProfil_Click(sender As Object, e As EventArgs) Handles tsmiValidationProfil.Click
If CURRENT_CLICKED_PROFILE_ID <> 0 Then
@ -1695,11 +1703,11 @@ Public Class frmMain
Private Sub TabellenlayoutZurücksetzenToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles TabellenlayoutZurücksetzenToolStripMenuItem.Click
Reset_GridLayout(False)
Private Async Sub TabellenlayoutZurücksetzenToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles TabellenlayoutZurücksetzenToolStripMenuItem.Click
Await Reset_GridLayout(False)
End Sub
Sub Reset_GridLayout(FormLoad As Boolean)
Async Function Reset_GridLayout(FormLoad As Boolean) As Tasks.Task
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.SaveViewInfo()
InResetlayout = True
' Layout zurücksetzen
@ -1708,10 +1716,10 @@ Public Class frmMain
' Ansicht neu laden
LoadNavBar()
Decide_Load(FormLoad)
Await Decide_Load(FormLoad)
InResetlayout = False
RefreshHelper.LoadViewInfo()
End Sub
End Function
Private Sub GridView_Docs_DoubleClick(sender As Object, e As EventArgs) Handles GridView_Docs.DoubleClick
Item_Scope("DOUBLECLICK")
@ -1874,11 +1882,7 @@ Public Class frmMain
End Try
oStopWatch.Done()
End Sub
Private Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Decide_Load(True)
Handling_DEBUG_USER()
Private Async Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
If RIBBON_COLOR_SCHEME = "BLUE" Then
RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Blue
ElseIf RIBBON_COLOR_SCHEME = "DarkBlue".ToUpper Then
@ -1899,6 +1903,9 @@ Public Class frmMain
LOGGER.Debug($" RibbonControl1.ColorScheme [{RIBBON_COLOR_SCHEME}]")
Me.Text = ADDITIONAL_TITLE
CurrNavBarGroup = NavBarControl1.Groups(1)
Await Decide_Load(True)
Handling_DEBUG_USER()
End Sub
Sub Handling_DEBUG_USER()
If USER_DEBUG_LOG = True Then
@ -2004,14 +2011,14 @@ Public Class frmMain
End Sub
Private Sub bbtniRefresh_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniRefresh.ItemClick
Private Async Sub bbtniRefresh_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniRefresh.ItemClick
If GridControl_Docs.Visible = True And FormOpenClose = False Then
RefreshHelper.SaveViewInfo()
SaveGridLayout()
End If
LoadNavBar()
Decide_Load(False)
Await Decide_Load(False)
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo()
End Sub
@ -2165,7 +2172,7 @@ Public Class frmMain
End If
End Sub
Private Sub BarButtonItem2_ItemClick_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmGhostMode.ItemClick
Private Async Sub BarButtonItem2_ItemClick_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmGhostMode.ItemClick
frmGhostMode.ShowDialog()
If USER_GHOST_MODE_ACTIVE = True And USER_GHOST_MODE_USRNAME <> String.Empty Then
LOGGER.Info($"GHOST MODE for User {USER_GHOST_MODE_USRNAME} will now be initialized!")
@ -2177,7 +2184,7 @@ Public Class frmMain
_Init.InitBasics2()
GetBaseData("Load")
LoadNavBar()
Decide_Load(False)
Await Decide_Load(False)
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo()
End If
End Sub
@ -2198,13 +2205,13 @@ Public Class frmMain
End Sub
Private Sub BarButtonItem2_ItemClick_2(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
Private Async Sub BarButtonItem2_ItemClick_2(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
USER_GHOST_MODE_ACTIVE = False
USER_GHOST_MODE_USRNAME = String.Empty
BarButtonItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
_Init.InitUserLogin()
LoadNavBar()
Decide_Load(False)
Await Decide_Load(False)
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo()
End Sub

View File

@ -134,9 +134,12 @@ Public Class frmMonitor
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in LoadDoc:")
End Try
End Sub
Private Sub frmMonitor_Load(sender As Object, e As EventArgs) Handles Me.Load
Private Async Sub frmMonitor_Load(sender As Object, e As EventArgs) Handles Me.Load
SplitContainerControlMain.Collapsed = True
Load_Grid_Data()
GridView1.ShowLoadingPanel()
Await Load_Grid_Data()
GridView1.HideLoadingPanel()
Select Case DT_MONITOR_KONFIG.Rows.Count
Case 2
@ -164,7 +167,7 @@ Public Class frmMonitor
LOGGER.Error(ex)
End Try
End Sub
Sub Load_Grid_Data()
Async Function Load_Grid_Data() As Threading.Tasks.Task
Try
FormShown = False
Dim oSQL = "SELECT * FROM TBPM_MONITOR_KONFIG"
@ -173,7 +176,7 @@ Public Class frmMonitor
If DT_MONITOR_KONFIG.Rows.Count >= 1 Then
oSQL = DT_MONITOR_KONFIG.Rows(0).Item("GRID_SQL")
GridView1.Columns.Clear()
Dim oDTGRID1 As DataTable = ClassDatabase.Return_Datatable(oSQL, "Monitor-Load_Grid_Data2")
Dim oDTGRID1 As DataTable = Await ClassDatabase.Return_DatatableAsync(oSQL, "Monitor-Load_Grid_Data2")
GridControl1.DataSource = oDTGRID1
GRID1_TITLE = DT_MONITOR_KONFIG.Rows(0).Item("GRID_TITLE")
@ -216,7 +219,7 @@ Public Class frmMonitor
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Load_Grid_Data:")
End Try
End Sub
End Function
Sub LoadGrid1Layout()
Try
Dim Filename As String = String.Format("DevExpressGridViewMonitor_UserLayout_Grid1.xml")
@ -464,7 +467,7 @@ Public Class frmMonitor
End Sub
Private Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
Private Async Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
Select Case DT_MONITOR_KONFIG.Rows.Count
Case 2
RemoveLayout()
@ -479,6 +482,9 @@ Public Class frmMonitor
RemoveLayout3()
RemoveLayout4()
End Select
Load_Grid_Data()
GridView1.ShowLoadingPanel()
Await Load_Grid_Data()
GridView1.HideLoadingPanel()
End Sub
End Class