236c1f5be1
- cambiato formato tempo di esecuzione in statistiche - gestita risposta SubMode 4 in Rest
220 lines
11 KiB
VB.net
220 lines
11 KiB
VB.net
Imports System.Drawing
|
|
Imports System.Windows.Forms
|
|
Imports System.Windows.Threading
|
|
Imports EgwMultiEngineManager.Data
|
|
Imports EgwMultiEngineManager.Tray.ExecEnvironmentManager
|
|
|
|
Class Application
|
|
|
|
' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
|
|
' can be handled in this file.
|
|
Private m_MainWindowVM As MainWindowVM
|
|
Private m_MainWindowV As MainWindowV
|
|
Private m_bIsShuttingDown As Boolean = False
|
|
Private m_NotifyIcon As NotifyIcon
|
|
|
|
Private m_StatisticsTimer As New DispatcherTimer
|
|
|
|
Protected Overrides Sub OnStartup(e As StartupEventArgs)
|
|
MyBase.OnStartup(e)
|
|
ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown
|
|
' creo Vm e quindi avvio processi
|
|
m_MainWindowVM = New MainWindowVM
|
|
AddHandler m_MainWindowVM.QuitApplication, AddressOf MainWindowVM_QuitApplication
|
|
m_MainWindowVM.Init()
|
|
' creo icona di notifica nella tray
|
|
m_NotifyIcon = New NotifyIcon
|
|
m_NotifyIcon.Visible = True
|
|
m_NotifyIcon.Icon = New Icon(Application.GetResourceStream(New Uri("Resources/EgwMultiEngineManager.ico", UriKind.Relative)).Stream)
|
|
m_NotifyIcon.Text = "EgwMultiEngineManager"
|
|
|
|
Dim ContextMenu As New ContextMenu
|
|
' Dim OpenBtn As New MenuItem("Open", AddressOf OpenBtn_Click)
|
|
Dim RestartBtn As New MenuItem("Restart", AddressOf RestartBtn_Click)
|
|
Dim ForceQuitBtn As New MenuItem("Force Quit", AddressOf ForceQuitBtn_Click)
|
|
Dim QuitBtn As New MenuItem("Quit", AddressOf QuitBtn_Click)
|
|
'ContextMenu.MenuItems.Add(OpenBtn)
|
|
ContextMenu.MenuItems.Add(RestartBtn)
|
|
ContextMenu.MenuItems.Add(ForceQuitBtn)
|
|
ContextMenu.MenuItems.Add(QuitBtn)
|
|
m_NotifyIcon.ContextMenu = ContextMenu
|
|
AddHandler m_NotifyIcon.Click, AddressOf NotifyIcon_Click
|
|
' inizializzo timer statistiche
|
|
m_StatisticsTimer.Interval = New TimeSpan(0, 0, 10)
|
|
AddHandler m_StatisticsTimer.Tick, AddressOf StatisticsTimer_Tick
|
|
StatisticsTimer_Tick()
|
|
m_StatisticsTimer.Start()
|
|
End Sub
|
|
|
|
Sub NotifyIcon_Click(sender As Object, e As EventArgs)
|
|
'If IsNothing(m_MainWindowV) Then
|
|
' m_MainWindowV = New MainWindowV(m_MainWindowVM)
|
|
' AddHandler m_MainWindowV.Deactivated, AddressOf MainWindowV_LostFocus
|
|
' m_MainWindowV.Show()
|
|
' 'Else
|
|
' ' m_MainWindowV.DataContext = Nothing
|
|
' ' Dim EH_MainWindowV_LostFocus As EventHandler = AddressOf MainWindowV_LostFocus
|
|
' ' RemoveHandler m_MainWindowV.Deactivated, EH_MainWindowV_LostFocus
|
|
' ' m_MainWindowV.Close()
|
|
' ' m_MainWindowV = Nothing
|
|
'End If
|
|
End Sub
|
|
|
|
Private Sub MainWindowV_Deactivated(sender As Object, e As EventArgs)
|
|
If Not IsNothing(m_MainWindowV) AndAlso Not m_bIsShuttingDown Then
|
|
m_MainWindowV.DataContext = Nothing
|
|
Dim EH_MainWindowV_LostFocus As EventHandler = AddressOf MainWindowV_Deactivated
|
|
RemoveHandler m_MainWindowV.Deactivated, EH_MainWindowV_LostFocus
|
|
m_MainWindowV.Close()
|
|
m_MainWindowV = Nothing
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub MainWindowVM_QuitApplication()
|
|
m_bIsShuttingDown = True
|
|
Quit()
|
|
End Sub
|
|
|
|
Private Sub OpenBtn_Click(sender As Object, e As EventArgs)
|
|
m_MainWindowV = New MainWindowV(m_MainWindowVM)
|
|
AddHandler m_MainWindowV.Deactivated, AddressOf MainWindowV_Deactivated
|
|
m_MainWindowV.Show()
|
|
End Sub
|
|
|
|
Private Sub RestartBtn_Click(sender As Object, e As EventArgs)
|
|
'Process.Start(Application.ResourceAssembly.Location)
|
|
Quit()
|
|
Threading.Thread.Sleep(1000 * 5)
|
|
System.Windows.Forms.Application.Restart()
|
|
End Sub
|
|
|
|
Private Sub ForceQuitBtn_Click()
|
|
Quit()
|
|
Dim sEngineName As String = "EgtEngine"
|
|
' recupero tutti gli EgtEngine attivi
|
|
Dim ProcessList As List(Of Process) = Process.GetProcesses.Where(Function(x) x.ProcessName.StartsWith(sEngineName)).ToList()
|
|
For Each CurrProcess As Process In ProcessList
|
|
CurrProcess.Kill()
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub QuitBtn_Click(sender As Object, e As EventArgs)
|
|
Quit()
|
|
End Sub
|
|
|
|
Private Sub Quit()
|
|
m_MainWindowVM.Quit()
|
|
If Not IsNothing(m_NotifyIcon) Then
|
|
m_NotifyIcon.Dispose()
|
|
m_NotifyIcon = Nothing
|
|
End If
|
|
Threading.Thread.Sleep(100)
|
|
Application.Current.Shutdown()
|
|
End Sub
|
|
|
|
Private Sub StatisticsTimer_Tick()
|
|
If True Then
|
|
Dim sTooltip As String = "RPTQ15H" & Environment.NewLine
|
|
Dim sEnvironment As String = ""
|
|
For nGroupType = EnvironmentCommunicationTypes.REDIS To EnvironmentCommunicationTypes.REST
|
|
Dim nGroupIndex As Integer = 1
|
|
Dim sGroupName As String = If(nGroupType = EnvironmentCommunicationTypes.REST, S_RESTEXECGROUP, S_EXECGROUP) & nGroupIndex.ToString()
|
|
While GetMainPrivateProfileString(sGroupName, K_ENVIRONMENT, "", sEnvironment) > 0
|
|
Dim CurrStatistics As Statistics = m_MainWindowVM.GetValueFromKeyInStatisticsList(sGroupName)
|
|
If Not IsNothing(CurrStatistics) Then
|
|
sTooltip &= If(nGroupType = EnvironmentCommunicationTypes.REST, "R", "G") & nGroupIndex.ToString() &
|
|
CurrStatistics.nEngineRunningQty &
|
|
CurrStatistics.nEngineProcessingQty &
|
|
(CurrStatistics.dMidProcessingTime / 1000).ToString("N1") &
|
|
CurrStatistics.nQuestionInQueue &
|
|
CurrStatistics.nLastMinAnswer &
|
|
CurrStatistics.nLast5MinAnswer &
|
|
CurrStatistics.nLastHourAnswer & Environment.NewLine
|
|
'"MinT " & e.dMinProcessingTime.ToString("N1") & Environment.NewLine &
|
|
'"MaxT " & e.nQuestionInQueue.ToString("N1") & Environment.NewLine &
|
|
End If
|
|
nGroupIndex += 1
|
|
sGroupName = If(nGroupType = EnvironmentCommunicationTypes.REST, S_RESTEXECGROUP, S_EXECGROUP) & nGroupIndex.ToString()
|
|
End While
|
|
Next
|
|
sTooltip = sTooltip.Substring(0, Math.Min(60, sTooltip.Length))
|
|
m_NotifyIcon.Text = sTooltip
|
|
Return
|
|
Dim ExecEnvironment As EXECENVIRONMENTS = ExecEnvironmentManager.GetExecEnvironmentFromString(sEnvironment)
|
|
If ExecEnvironment <> EXECENVIRONMENTS.NULL Then
|
|
Dim CurrStatistics As Statistics = m_MainWindowVM.GetValueFromKeyInStatisticsList(ExecEnvironment)
|
|
If Not IsNothing(CurrStatistics) Then
|
|
Dim Tooltip As String = "QRun " & CurrStatistics.nEngineRunningQty & Environment.NewLine &
|
|
"QProc " & CurrStatistics.nEngineProcessingQty & Environment.NewLine &
|
|
"MidT " & CurrStatistics.dMidProcessingTime.ToString("N1") & Environment.NewLine &
|
|
"Que " & CurrStatistics.nQuestionInQueue & Environment.NewLine &
|
|
"1MAns " & CurrStatistics.nLastMinAnswer & Environment.NewLine &
|
|
"5MAns " & CurrStatistics.nLast5MinAnswer & Environment.NewLine &
|
|
"HAns " & CurrStatistics.nLastHourAnswer
|
|
'"MinT " & e.dMinProcessingTime.ToString("N1") & Environment.NewLine &
|
|
'"MaxT " & e.nQuestionInQueue.ToString("N1") & Environment.NewLine &
|
|
Tooltip = Tooltip.Substring(0, Math.Min(60, Tooltip.Length))
|
|
m_NotifyIcon.Text = Tooltip
|
|
End If
|
|
End If
|
|
ElseIf False Then
|
|
Dim sEnvironment As String = ""
|
|
GetMainPrivateProfileString(S_EXECGROUP & 1.ToString(), K_ENVIRONMENT, "", sEnvironment)
|
|
Dim ExecEnvironment As EXECENVIRONMENTS = ExecEnvironmentManager.GetExecEnvironmentFromString(sEnvironment)
|
|
If ExecEnvironment <> EXECENVIRONMENTS.NULL Then
|
|
Dim CurrStatistics As Statistics = m_MainWindowVM.GetValueFromKeyInStatisticsList(ExecEnvironment)
|
|
If Not IsNothing(CurrStatistics) Then
|
|
Dim Tooltip As String = "QRun " & CurrStatistics.nEngineRunningQty & Environment.NewLine &
|
|
"QProc " & CurrStatistics.nEngineProcessingQty & Environment.NewLine &
|
|
"MidT " & CurrStatistics.dMidProcessingTime.ToString("N1") & Environment.NewLine &
|
|
"Que " & CurrStatistics.nQuestionInQueue & Environment.NewLine &
|
|
"1MAns " & CurrStatistics.nLastMinAnswer & Environment.NewLine &
|
|
"5MAns " & CurrStatistics.nLast5MinAnswer & Environment.NewLine &
|
|
"HAns " & CurrStatistics.nLastHourAnswer
|
|
'"MinT " & e.dMinProcessingTime.ToString("N1") & Environment.NewLine &
|
|
'"MaxT " & e.nQuestionInQueue.ToString("N1") & Environment.NewLine &
|
|
Tooltip = Tooltip.Substring(0, Math.Min(60, Tooltip.Length))
|
|
m_NotifyIcon.Text = Tooltip
|
|
End If
|
|
End If
|
|
Else
|
|
Dim KeyList As List(Of String) = m_MainWindowVM.GetStatisticsListKeyCollection()
|
|
Dim StatisticsList As New List(Of Statistics)
|
|
Dim sQRun As String = "QRun__"
|
|
Dim sQProc As String = "QProc_"
|
|
Dim sMidT As String = "MidT__"
|
|
Dim sQue As String = "Que___"
|
|
Dim s1MAns As String = "1MAns_"
|
|
Dim s5MAns As String = "5MAns_"
|
|
Dim sHAns As String = "HAns__"
|
|
For Each Key In KeyList
|
|
Dim KeyStatistics As Statistics = m_MainWindowVM.GetValueFromKeyInStatisticsList(Key)
|
|
sQRun &= KeyStatistics.nEngineRunningQty.ToString("00000") & " "
|
|
sQProc &= KeyStatistics.nEngineProcessingQty.ToString("00000") & " "
|
|
sMidT &= Math.Ceiling(KeyStatistics.dMidProcessingTime).ToString("00000") & " "
|
|
sQue &= KeyStatistics.nQuestionInQueue.ToString("00000") & " "
|
|
s1MAns &= KeyStatistics.nLastMinAnswer.ToString("00000") & " "
|
|
s5MAns &= KeyStatistics.nLast5MinAnswer.ToString("00000") & " "
|
|
sHAns &= KeyStatistics.nLastHourAnswer.ToString("00000") & " "
|
|
Next
|
|
Dim Tooltip As String = sQRun & Environment.NewLine &
|
|
sQProc & Environment.NewLine &
|
|
sMidT & Environment.NewLine &
|
|
sQue & Environment.NewLine &
|
|
s1MAns & Environment.NewLine &
|
|
s5MAns & Environment.NewLine &
|
|
sHAns
|
|
'"MinT " & e.dMinProcessingTime.ToString("N1") & Environment.NewLine &
|
|
'"MaxT " & e.nQuestionInQueue.ToString("N1") & Environment.NewLine &
|
|
'Tooltip = Tooltip.Substring(0, Math.Min(60, Tooltip.Length))
|
|
'm_NotifyIcon.Text = Tooltip
|
|
m_NotifyIcon.BalloonTipTitle = "EgwMultiEngineManager"
|
|
m_NotifyIcon.BalloonTipIcon = ToolTipIcon.Info
|
|
m_NotifyIcon.BalloonTipText = Tooltip
|
|
m_NotifyIcon.ShowBalloonTip(5000)
|
|
End If
|
|
End Sub
|
|
|
|
|
|
End Class
|