diff --git a/app/DD_PM_WINDREAM/ClassDatabase.vb b/app/DD_PM_WINDREAM/ClassDatabase.vb index 91d6e4f..f0c8f56 100644 --- a/app/DD_PM_WINDREAM/ClassDatabase.vb +++ b/app/DD_PM_WINDREAM/ClassDatabase.vb @@ -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 diff --git a/app/DD_PM_WINDREAM/frmMain.vb b/app/DD_PM_WINDREAM/frmMain.vb index 23b5082..ffb672a 100644 --- a/app/DD_PM_WINDREAM/frmMain.vb +++ b/app/DD_PM_WINDREAM/frmMain.vb @@ -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 diff --git a/app/DD_PM_WINDREAM/frmMonitor.vb b/app/DD_PM_WINDREAM/frmMonitor.vb index 68abd84..336bb91 100644 --- a/app/DD_PM_WINDREAM/frmMonitor.vb +++ b/app/DD_PM_WINDREAM/frmMonitor.vb @@ -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 \ No newline at end of file