Files
AUTS_Desktop_Prod/AUTS_ServiceControler/FrmMain.vb

908 lines
31 KiB
VB.net
Raw Normal View History

Imports UTS_Core.UTSModule
Imports UTS_Core.UTSModule.Service
Public Class FrmMain
#Region "窗体初始化"
''' <summary>
''' 窗体加载时启动项
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
InitSerName()
InitTabMain()
InitGrid()
Text = $"{Application.ProductName} {Application.ProductVersion}"
End Sub
Private Sub InitTabMain()
TabTasks.SizeMode = TabSizeMode.Fixed '隐藏TabControl的表头
TabTasks.ItemSize = New Size(0, 1)
End Sub
''' <summary> 初始化本地IP </summary>
Private Sub InitSerName()
TsCboServiceName.Items.Clear()
InitUtsServices()
For Each service As UtsService In _services
TsCboServiceName.Items.Add(service.Name)
Next
If TsCboServiceName.Items.Count > 0 Then TsCboServiceName.SelectedIndex = 0
End Sub
#End Region
#Region "服务控制信息"
''' <summary>
''' 所有服务的信息
''' </summary>
Private _services As List(Of UtsService)
Private _service As UtsService
Private Sub InitUtsServices()
_services = New List(Of UtsService)()
Try
_services.Add(New UtsService(UtsRegistry.UpdateServiceName, UtsRegistry.UpdateServiceVersion))
Catch ex As Exception
Console.WriteLine($"Init UpdateService Error:{ex.Message}")
End Try
Try
_services.Add(New UtsService(UtsRegistry.DataServiceName, UtsRegistry.DataServiceVersion))
Catch ex As Exception
Console.WriteLine($"Init DataService Error:{ex.Message}")
End Try
End Sub
''' <summary>
''' 选择下拉框改变值
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsCboServiceName_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TsCboServiceName.SelectedIndexChanged
_service = _services(TsCboServiceName.SelectedIndex)
TssLblServiceName.Text = $"{_service.Name} {_service.Version} :"
UpdateServiceStatusTip(_service.ServicesStatus())
End Sub
Private Sub TsBtnReflushServices_Click(sender As Object, e As EventArgs) Handles TsBtnReflushServices.Click
InitSerName()
End Sub
''' <summary>
''' 更新服务状态
''' </summary>
''' <param name="status"></param>
Private Sub UpdateServiceStatusTip(status As UtsService.ServiceStatusEnum)
Static tipColor() As Color = {Color.Gray, Color.Red, Color.Aquamarine, Color.Blue, Color.Orange, Color.Blue, Color.Green}
TssLblServiceStatus.ForeColor = tipColor(status)
TssLblServiceStatus.Text = $"{ UtsService.GetEnumDescription(status)}"
UpdateServiceEnabled(status)
End Sub
Private Sub UpdateServiceEnabled(status As UtsService.ServiceStatusEnum)
If status <= UtsService.ServiceStatusEnum.Nonentity Then '服务不存在状态
TsBtnStartService.Enabled = False
TsBtnCloseService.Enabled = False
TsBtnRestartService.Enabled = False
TsBtnConnService.Enabled = False
TsBtnServiceInstall.Enabled = False
TsBtnServiceUninstall.Enabled = False
If _tcpClient IsNot Nothing Then
_tcpClient.Close()
UpdateTcpTip(_tcpClient.IsOpen) '更新连接提示
UpdateConnectionEnabled(_tcpClient.IsOpen) '根据连接,设置控件可操作性
End If
ElseIf status <= UtsService.ServiceStatusEnum.StartPending Then '服务存在未启用状态
TsBtnStartService.Enabled = True
TsBtnCloseService.Enabled = True
TsBtnRestartService.Enabled = True
TsBtnConnService.Enabled = False
TsBtnServiceInstall.Enabled = True
TsBtnServiceUninstall.Enabled = True
If _tcpClient IsNot Nothing Then
_tcpClient.Close()
UpdateTcpTip(_tcpClient.IsOpen) '更新连接提示
UpdateConnectionEnabled(_tcpClient.IsOpen) '根据连接,设置控件可操作性
End If
Else '服务存在且启用状态
TsBtnStartService.Enabled = True
TsBtnCloseService.Enabled = True
TsBtnRestartService.Enabled = True
TsBtnConnService.Enabled = True
TsBtnServiceInstall.Enabled = True
TsBtnServiceUninstall.Enabled = True
Try
If _tcpClient Is Nothing Then
InitTcpClient()
_tcpClient.Open()
ElseIf _tcpClient.IsOpen = False Then
_tcpClient.Open()
End If
UpdateTcpTip(_tcpClient.IsOpen) '更新连接提示
UpdateConnectionEnabled(_tcpClient.IsOpen) '根据连接,设置控件可操作性
Catch ex As Exception
Console.WriteLine($"Tcp Client Open Error:{ex.Message}")
End Try
End If
End Sub
''' <summary>
''' 工具栏检测服务按键
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnTestingServices_Click(sender As Object, e As EventArgs) Handles TsBtnTestingServices.Click
If _service Is Nothing Then Return
UpdateServiceStatusTip(_service.ServicesStatus())
End Sub
''' <summary>
''' 工具栏点击一键安装
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnServiceInstall_Click(sender As Object, e As EventArgs) Handles TsBtnServiceInstall.Click
Try
_service.InstallService()
MsgBox($"{_service.Name}服务安装成功!")
Catch ex As Exception
MsgBox($"InstallService Error:{ex.Message}")
End Try
UpdateServiceStatusTip(_service.ServicesStatus())
End Sub
''' <summary>
''' 工具栏卸载按键
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnServiceUninstall_Click(sender As Object, e As EventArgs) Handles TsBtnServiceUninstall.Click
If MsgBox($"是否确定卸载操作", MsgBoxStyle.OkCancel) <> MsgBoxResult.Ok Then Return
Try
_service.UnInstallService()
MsgBox($"{_service.Name}服务卸载成功!")
Catch ex As Exception
MsgBox($"UnInstallService Error:{ex.Message}")
End Try
UpdateServiceStatusTip(_service.ServicesStatus())
End Sub
''' <summary>
''' 工具栏启用服务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnStartService_Click(sender As Object, e As EventArgs) Handles TsBtnStartService.Click
Try
_service.StartService()
Catch ex As Exception
MsgBox($"StartService Error:{ex.Message}")
End Try
UpdateServiceStatusTip(_service.ServicesStatus())
End Sub
''' <summary>
''' 工具栏停止服务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnCloseService_Click(sender As Object, e As EventArgs) Handles TsBtnCloseService.Click
Try
_service.StopService()
Catch ex As Exception
MsgBox($"StopService Error:{ex.Message}")
End Try
UpdateServiceStatusTip(_service.ServicesStatus())
End Sub
''' <summary>
''' 工具栏重启服务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnRestartService_Click(sender As Object, e As EventArgs) Handles TsBtnRestartService.Click
Try
_service.RestartService()
Catch ex As Exception
MsgBox($"RestartService Error:{ex.Message}")
End Try
UpdateServiceStatusTip(_service.ServicesStatus())
End Sub
#End Region
#Region "任务表格操作"
Enum ColNameEnum
Sn
Act
Type
Name
Max
End Enum
Private Sub InitGrid()
With Grid1
.NewFile()
.BorderStyle = FlexCell.BorderStyleEnum.None
.BackColorBkg = Color.Transparent
.DisplayRowNumber = True
.AutoRedraw = False
.ExtendLastCol = True
.Rows = 1
.Cols = ColNameEnum.Max
.Column(ColNameEnum.Sn).Width = 20
.Column(ColNameEnum.Act).Width = 30
.Column(ColNameEnum.Type).Width = 40
.Column(ColNameEnum.Act).CellType = FlexCell.CellTypeEnum.CheckBox
For col As Integer = 0 To ColNameEnum.Max - 1
.Cell(0, col).Text = [Enum].GetName(GetType(ColNameEnum), col) '设置列名
Next
.AutoRedraw = True
.Refresh()
End With
End Sub
Private Sub Grid1_SelChange(sender As Object, e As FlexCell.Grid.SelChangeEventArgs) Handles Grid1.SelChange
If e.FirstRow > 0 Then
TabTasks.SelectedIndex = e.FirstRow - 1
End If
End Sub
#End Region
#Region "服务通讯"
Private _tcpClient As AutsTcpClient
''' <summary>
''' 连接服务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnConnService_Click(sender As Object, e As EventArgs) Handles TsBtnConnService.Click
UpdateTcpClient()
End Sub
''' <summary>
''' 初始化网络套接字
''' 注册表中无端口号时会引发异常
''' </summary>
Private Sub InitTcpClient()
Static remoteIp As String = "127.0.0.1"
Static remotePort As Integer = -1 '默认55533,实际使用从注册表中获取
remotePort = CInt(UtsRegistry.DataServicePort)
_tcpClient = New AutsTcpClient(remoteIp, remotePort)
End Sub
Private Sub UpdateTcpClient()
Dim tcpConnect As Boolean
If _tcpClient IsNot Nothing AndAlso _tcpClient.IsOpen Then
_tcpClient.Close()
tcpConnect = False
Else
Try
InitTcpClient()
_tcpClient.Open()
tcpConnect = True
Catch ex As Exception
Console.WriteLine($"Open Tcp Client Error:{ex.Message}")
tcpConnect = False
End Try
End If
UpdateTcpTip(tcpConnect) '更新连接提示
UpdateConnectionEnabled(tcpConnect) '根据连接,设置控件可操作性
End Sub
''' <summary>
''' 更新网络的提示状态
''' </summary>
''' <param name="connected">是否连接成功</param>
Private Sub UpdateTcpTip(connected As Boolean)
If connected Then
TssLblConnState.Text = $"已建立TCP连接"
TssLblConnState.ForeColor = Color.Green
TsBtnConnService.Text = $"断连服务"
TsBtnConnService.ForeColor = Color.Red
Else
TssLblConnState.Text = $"无TCP连接"
TssLblConnState.ForeColor = Color.Red
TsBtnConnService.Text = $"连接服务"
TsBtnConnService.ForeColor = Color.Green
End If
End Sub
Private Sub UpdateConnectionEnabled(connected As Boolean)
TsBtDelTasks.Enabled = connected
TsBtnAddTasks.Enabled = connected
TsBtnStartTasks.Enabled = connected
TsBtnStopTasks.Enabled = connected
TsBtnRestartTasks.Enabled = connected
TsBtnGetTask.Enabled = connected
TsBtnSetTasks.Enabled = connected
End Sub
#End Region
#Region "任务命令"
''' <summary> 公共用户 </summary>
Private _user As String = "Root"
Private _tasks As New TaskForms
''' <summary>
''' 校验回复字符串
''' </summary>
''' <param name="replyString"></param>
''' <param name="cmdName"></param>
''' <returns></returns>
Private Function CheckReplyString(replyString As String, cmdName As TaskJsonParam.CmdNamesEnum) As TaskJsonParam
If String.IsNullOrWhiteSpace(replyString) Then Return Nothing
Dim replyParam As TaskJsonParam
replyParam = TaskJsonParam.DeserializeFormJson(replyString)
If replyParam.CmdName <> cmdName Then Return Nothing
Return replyParam
End Function
''' <summary>
''' 添加任务
''' </summary>
Private Sub AddTasks()
_addFrom = New FrmAddTask
If _addFrom.ShowDialog <> DialogResult.OK Then Return
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.AddTasks, _user, Application.ProductName)
taskParam.TasksInfo.Add(_addFrom.TaskForm.GetParams())
ServiceCommunicator(taskParam)
_addFrom.Dispose()
End Sub
Private Sub AddTaskGrid(taskStatus As String, taskType As String, taskName As String)
Grid1.AddItem("")
Grid1.Cell(Grid1.Rows - 1, ColNameEnum.Act).Text = CStr(IIf(taskStatus = "Start", "1", "0"))
Grid1.Cell(Grid1.Rows - 1, ColNameEnum.Type).Text = taskType
Grid1.Cell(Grid1.Rows - 1, ColNameEnum.Name).Text = taskName
Grid1.Cell(Grid1.Rows - 1, ColNameEnum.Sn).SetFocus()
End Sub
Private Sub ChangeTaskGrid(taskStatus As String, taskType As String, taskName As String)
Grid1.Cell(Grid1.Rows - 1, ColNameEnum.Act).Text = CStr(IIf(taskStatus = "Start", "1", "0"))
Grid1.Cell(Grid1.Rows - 1, ColNameEnum.Type).Text = taskType
Grid1.Cell(Grid1.Rows - 1, ColNameEnum.Name).Text = taskName
Grid1.Cell(Grid1.Rows - 1, ColNameEnum.Sn).SetFocus()
End Sub
Private Sub AddTaskForm(taskForm As ITaskForm)
Dim tp As New TabPage
taskForm.ShowForm(tp)
TabTasks.TabPages.Add(tp)
End Sub
Private Sub RemoveTaskGrid(index As Integer)
Grid1.Row(index + 1).Delete()
End Sub
Private Sub RemoveAtTaskForm(index As Integer)
TabTasks.TabPages.RemoveAt(index)
End Sub
Private Sub StartTaskForm(index As Integer)
Grid1.Cell(index + 1, ColNameEnum.Act).Text = "1"
End Sub
Private Sub StopTaskForm(index As Integer)
Grid1.Cell(index + 1, ColNameEnum.Act).Text = "0"
End Sub
''' <summary>
''' 删除任务
''' </summary>
Private Sub DeleteTasks()
If MsgBox("是否删除当前任务?", MsgBoxStyle.OkCancel) <> MsgBoxResult.Ok Then Return
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.DeleteTasks, _user, Application.ProductName)
taskParam.TasksName.Add(Grid1.Cell(TabTasks.SelectedIndex + 1, ColNameEnum.Name).Text)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 开启任务
''' </summary>
Private Sub StartTasks()
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.StartTasks, _user, Application.ProductName)
taskParam.TasksName.Add(Grid1.Cell(TabTasks.SelectedIndex + 1, ColNameEnum.Name).Text)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 暂停任务
''' </summary>
Private Sub StopTasks()
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.StopTasks, _user, Application.ProductName)
taskParam.TasksName.Add(Grid1.Cell(TabTasks.SelectedIndex + 1, ColNameEnum.Name).Text)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 获取任务参数
''' </summary>
Private Sub GetTasksParam()
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.GetTasks, _user, Application.ProductName)
taskParam.TasksName.Add(Grid1.Cell(TabTasks.SelectedIndex + 1, ColNameEnum.Name).Text)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 设置任务参数
''' </summary>
Private Sub SetTasksParam()
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.SetTasks, _user, Application.ProductName)
taskParam.TasksName.Add(Grid1.Cell(TabTasks.SelectedIndex + 1, ColNameEnum.Name).Text)
taskParam.TasksInfo.Add(_tasks.GetParams(TabTasks.SelectedIndex))
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 重启任务,立即执行
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnRestartTasks_Click(sender As Object, e As EventArgs) Handles TsBtnRestartTasks.Click
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.RestartTasks, _user, Application.ProductName)
taskParam.TasksName.Add(Grid1.Cell(TabTasks.SelectedIndex + 1, ColNameEnum.Name).Text)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 工具栏添加任务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnAddTasks_Click(sender As Object, e As EventArgs) Handles TsBtnAddTasks.Click, CmsBtnAddTasks.Click
AddTasks()
End Sub
''' <summary>
''' 工具栏删除任务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtDelTasks_Click(sender As Object, e As EventArgs) Handles TsBtDelTasks.Click, CmsBtnDeleteTasks.Click
DeleteTasks()
End Sub
''' <summary>
''' 工具栏开启任务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnStartTasks_Click(sender As Object, e As EventArgs) Handles TsBtnStartTasks.Click, CmsBtnStartTasks.Click
StartTasks()
End Sub
''' <summary>
''' 工具栏暂停任务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnStopTasks_Click(sender As Object, e As EventArgs) Handles TsBtnStopTasks.Click, CmsBtnStopTasks.Click
StopTasks()
End Sub
''' <summary>
''' 工具栏获取任务参数
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnGetTask_Click(sender As Object, e As EventArgs) Handles TsBtnGetTask.Click, CmsBtnGetTasks.Click
GetTasksParam()
End Sub
''' <summary>
''' 工具栏设置任务参数
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsBtnSetTasks_Click(sender As Object, e As EventArgs) Handles TsBtnSetTasks.Click, CmsBtnSetTasks.Click
SetTasksParam()
End Sub
''' <summary>
''' 右键菜单全部开启任务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub CmsBtnStartAllTasks_Click(sender As Object, e As EventArgs) Handles CmsBtnStartAllTasks.Click
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.StartAllTasks, _user, Application.ProductName)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 右键菜单全部暂停任务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub CmsBtnStopAllTasks_Click(sender As Object, e As EventArgs) Handles CmsBtnStopAllTasks.Click
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.StopAllTasks, _user, Application.ProductName)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 右键菜单全部删除任务
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub CmsBtnDeleteAllTasks_Click(sender As Object, e As EventArgs) Handles CmsBtnDeleteAllTasks.Click
If MsgBox("是否删除所有任务?", MsgBoxStyle.OkCancel) <> MsgBoxResult.Ok Then Return
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.DeleteAllTasks, _user, Application.ProductName)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 右键菜单获取全部任务参数
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub CmsBtnGetAllTasks_Click(sender As Object, e As EventArgs) Handles CmsBtnGetAllTasks.Click, CmsBtnRefreshList.Click
Dim taskParam As New TaskJsonParam(TaskJsonParam.CmdNamesEnum.GetAllTasks, _user, Application.ProductName)
ServiceCommunicator(taskParam)
End Sub
''' <summary>
''' 与服务通讯,包含发送,接收,处理过程
'''→◆Recv: '接收
'''←◇Send: '发送
''' </summary>
''' <param name="taskParam"></param>
Private Sub ServiceCommunicator(taskParam As TaskJsonParam)
Dim aTime As String = Date.Now.ToString("yyyy-MM-dd HH:mm:ss:fff ")
Try
Dim jsonString As String = TaskJsonParam.SerializeToJson(taskParam) & vbCrLf
_tcpClient.WriteJsonString(jsonString) '发送数据
AppendTextTip($"←◇Send[{aTime}]{vbLf}", Color.Gray)
AppendTextTip($"{jsonString}{vbCrLf}", Color.Blue)
Catch ex As Exception
MsgBox($"SendJsonString Error:{ex.Message}")
Return
End Try
Dim replyString As String = _tcpClient.ReadJsonString()
Try
Dim replyParam As TaskJsonParam = CheckReplyString(replyString, taskParam.CmdName) '接收数据校验
AppendTextTip($"→◆Recv[{aTime}]{vbLf}", Color.Gray)
AppendTextTip($"{replyString}{vbCrLf}", Color.Green)
If replyParam.CmdStatus = TaskJsonParam.CmdStatusEnum.Pass.ToString() Then
DealFunction(replyParam)
TssLblExcuteTip.Text = $"Cmd:{replyParam.CmdName},Excute Pass!"
TssLblExcuteTip.ForeColor = Color.Green
Else
TssLblExcuteTip.Text = $"Cmd:{replyParam.CmdName} {replyParam.CmdStatus},Msg:{replyParam.CmdMsg}"
TssLblExcuteTip.ForeColor = Color.Red
End If
Catch ex As Exception
TssLblExcuteTip.Text = $"Cmd:{taskParam.CmdName} Deal ReplyString Error:{ex.Message}"
TssLblExcuteTip.ForeColor = Color.Blue
Return
End Try
End Sub
Private Sub DealFunction(replyParam As TaskJsonParam)
Select Case replyParam.CmdName
Case TaskJsonParam.CmdNamesEnum.AddTasks
DealAddTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.DeleteTasks
DealDeleteTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.StartTasks, TaskJsonParam.CmdNamesEnum.RestartTasks
DealStartTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.StopTasks
DealStopTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.GetTasks
DealGetTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.SetTasks
DealSetTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.StartAllTasks, TaskJsonParam.CmdNamesEnum.RestartAllTasks
DealStartAllTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.StopAllTasks
DealStopAllTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.DeleteAllTasks
DealDeleteAllTasks(replyParam)
Case TaskJsonParam.CmdNamesEnum.GetAllTasks
DealGetAllTasks(replyParam)
End Select
End Sub
Private Sub DealStartAllTasks(replyParam As TaskJsonParam)
For i As Integer = 1 To Grid1.Rows - 1
Grid1.Cell(i, ColNameEnum.Act).Text = "1"
Next
End Sub
Private Sub DealStopAllTasks(replyParam As TaskJsonParam)
For i As Integer = 1 To Grid1.Rows - 1
Grid1.Cell(i, ColNameEnum.Act).Text = "0"
Next
End Sub
Private Sub DealDeleteAllTasks(replyParam As TaskJsonParam)
Grid1.Rows = 1
TabTasks.TabPages.Clear()
_tasks.Clear()
End Sub
Private Sub DealGetAllTasks(replyParam As TaskJsonParam)
DealDeleteAllTasks(replyParam)
For Each taskInfo As Dictionary(Of String, String) In replyParam.TasksInfo
Dim taskType As ServiceTask.ServiceTaskTypeEnum = CType([Enum].Parse(GetType(ServiceTask.ServiceTaskTypeEnum), taskInfo("Type")), ServiceTask.ServiceTaskTypeEnum)
Dim taskForm As ITaskForm
Select Case taskType
Case ServiceTask.ServiceTaskTypeEnum.DbSync
taskForm = New FrmSyncTasks()
Case ServiceTask.ServiceTaskTypeEnum.ListenJsonFile
taskForm = New FrmListenTasks()
Case Else
Throw New Exception($"Unknow TaskType:{taskType}")
End Select
_tasks.Add(taskForm)
AddTaskForm(taskForm)
AddTaskGrid(taskInfo("Status"), taskInfo("Type"), taskInfo("Name"))
taskForm.SetParam(taskInfo)
Next
End Sub
Private _addFrom As FrmAddTask
Private Sub DealAddTasks(replyParam As TaskJsonParam)
_tasks.Add(_addFrom.TaskForm)
AddTaskForm(_addFrom.TaskForm)
AddTaskGrid("0", _addFrom.TaskForm.GetParams("Type"), _addFrom.TaskForm.GetParams("Name"))
End Sub
Private Sub DealDeleteTasks(replyParam As TaskJsonParam)
_tasks.RemoveAt(TabTasks.SelectedIndex)
RemoveTaskGrid(TabTasks.SelectedIndex)
RemoveAtTaskForm(TabTasks.SelectedIndex)
End Sub
Private Sub DealStartTasks(replyParam As TaskJsonParam)
_tasks.SetStatus(TabTasks.SelectedIndex, ServiceTask.ServiceTaskStatusEnum.Start)
StartTaskForm(TabTasks.SelectedIndex)
End Sub
Private Sub DealStopTasks(replyParam As TaskJsonParam)
_tasks.SetStatus(TabTasks.SelectedIndex, ServiceTask.ServiceTaskStatusEnum.Stop)
StopTaskForm(TabTasks.SelectedIndex)
End Sub
Private Sub DealGetTasks(replyParam As TaskJsonParam)
For Each taskInfo As Dictionary(Of String, String) In replyParam.TasksInfo
If taskInfo.ContainsKey("Name") Then
If _tasks.GetParams(TabTasks.SelectedIndex).Item("Name") = taskInfo.Item("Name") Then
ChangeTaskGrid(taskInfo("Status"), taskInfo("Type"), taskInfo("Name"))
_tasks.SetParams(TabTasks.SelectedIndex, taskInfo)
Else
Console.WriteLine($"Unsearch Name:{taskInfo.Item("Name")}")
End If
Else
Console.WriteLine($"UnExitst Name Filed!")
End If
Next
End Sub
Private Sub DealSetTasks(replyParam As TaskJsonParam)
End Sub
#End Region
#Region "添加通讯记录"
Private _isShowLog As Boolean = True '是否显示通讯记录数据
Private _isShowTip As Boolean = True '是否显示通讯记录提示
Private _isClosing As Boolean = False '是否窗体处于关闭状态
''' <summary>
''' 添加记录并设置格式
''' </summary>
''' <param name="str">添加的记录内容</param>
''' <param name="cor">需要设置的记录颜色</param>
Private Sub AppendTextTip(ByVal str As String, ByVal cor As Color)
Dim selStart As Integer
Dim selLength As Integer
selStart = RtxCommunicationLogs.TextLength
RtxCommunicationLogs.AppendText(str)
RtxCommunicationLogs.ScrollToCaret() '关键语句:将焦点滚动到文本内容后
selLength = RtxCommunicationLogs.TextLength - selStart
RtxCommunicationLogs.Select(selStart, selLength)
RtxCommunicationLogs.SelectionColor = cor
End Sub
Private Sub AppendTipText(recordString As String, col As Color)
If _isClosing Then Return
If _isShowTip = False Then Return
If RtxCommunicationLogs.InvokeRequired Then
RtxCommunicationLogs.Invoke(New Action(Sub()
If RtxCommunicationLogs.Lines.Count >= 256 Then RtxCommunicationLogs.Clear()
AppendTextTip($"{recordString}", col)
RtxCommunicationLogs.ScrollToCaret()
End Sub))
Else
If RtxCommunicationLogs.Lines.Count >= 256 Then RtxCommunicationLogs.Clear()
AppendTextTip($"{recordString}", col)
RtxCommunicationLogs.ScrollToCaret()
End If
End Sub
''' <summary>
''' 点击是否收起通讯日志
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsmPackUpRecord_Click(sender As Object, e As EventArgs) Handles TsmPackUpRecord.Click
SplMain.Panel2Collapsed = Not SplMain.Panel2Collapsed
If Not SplMain.Panel2Collapsed Then
TsmPackUpRecord.Text = $"隐藏通讯日志"
Else
TsmPackUpRecord.Text = $"显示通讯日志"
End If
End Sub
''' <summary>
''' 点击清空通讯日志
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TsmClearRecord_Click(sender As Object, e As EventArgs) Handles TsmClearRecord.Click
RtxCommunicationLogs.Clear()
End Sub
#End Region
#Region "一键配置更新"
Private Sub TsmConfigUpdate_Click(sender As Object, e As EventArgs) Handles TsmConfigUpdate.Click
Dim root As String = $"software\AUTS"
If UtsRegistry.RootDirExists = False Then
Try
Microsoft.Win32.Registry.LocalMachine.CreateSubKey($"{root}\LocalDb")
Microsoft.Win32.Registry.LocalMachine.CreateSubKey($"{root}\AUTS_DataService")
Microsoft.Win32.Registry.LocalMachine.CreateSubKey($"{root}\AUTS_UpdateService")
Catch ex As Exception
Console.WriteLine($"创建注册表项失败! 失败原因:{ex.Message}")
End Try
End If
'配置更新
Dim result As DialogResult = FrmUpdateConfig.ShowDialog()
InitSerName()
End Sub
#End Region
#Region "关闭窗体"
Private Sub FrmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
End Sub
Private Sub 卸载服务ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 卸载服务ToolStripMenuItem.Click
Dim filePath As String
Using fileOpen As OpenFileDialog = New OpenFileDialog()
fileOpen.Filter = $"服务执行程序(*.exe)|*.exe"
If fileOpen.ShowDialog() <> DialogResult.OK Then
Return
End If
filePath = fileOpen.FileName
End Using
If WinService.UnInstallService(filePath, Nothing) Then
MsgBox($"路径:{filePath},卸载服务成功")
Else
MsgBox($"路径:{filePath},卸载服务失败!")
End If
End Sub
Private Sub 输入路径卸载服务ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 输入路径卸载服务ToolStripMenuItem.Click
Dim filePath As String = InputBox($"请输入服务执行文件路径", "卸载服务")
If String.IsNullOrWhiteSpace(filePath) Then
MsgBox($"路径:{filePath},是无效路径,请重新输入!")
Return
End If
If WinService.UnInstallService(filePath, Nothing) Then
MsgBox($"路径:{filePath},卸载服务成功")
Else
MsgBox($"路径:{filePath},卸载服务失败!")
End If
End Sub
#End Region
End Class