feat: 在启动页面按 Esc 取消启动游戏

- 在 ModLaunch.vb 中添加 McLaunchCancel() 公共方法,封装取消启动逻辑
- 更新 PageLaunchLeft.vb 的 BtnCancel_Click 调用 McLaunchCancel()
- 更新 FormMain.xaml.vb 的 Esc 键处理:启动中按 Esc 取消启动,否则返回上一级

Closes #9193
This commit is contained in:
Howard302
2026-08-13 10:45:09 +00:00
parent 639de1b48a
commit 7c75fe4d4b
3 changed files with 28 additions and 15 deletions
+8 -2
View File
@@ -803,8 +803,14 @@ Public Class FormMain
' 在没有弹窗时:继续检查…… ' 在没有弹窗时:继续检查……
'========================== '==========================
'按 ESC 返回上一级 '按 ESC:启动中则取消启动,否则返回上一级
If e.Key = Key.Escape Then TriggerPageBack() If e.Key = Key.Escape Then
If McLaunchLoader.State = LoadState.Loading Then
McLaunchCancel()
Else
TriggerPageBack()
End If
End If
'更改隐藏版本可见性 '更改隐藏版本可见性
If e.Key = Key.F11 AndAlso PageCurrent = FormMain.PageType.InstanceSelect Then If e.Key = Key.F11 AndAlso PageCurrent = FormMain.PageType.InstanceSelect Then
FrmSelectRight.ShowHidden = Not FrmSelectRight.ShowHidden FrmSelectRight.ShowHidden = Not FrmSelectRight.ShowHidden
@@ -196,6 +196,25 @@ NextInner:
End Try End Try
End Sub End Sub
''' <summary>
''' 取消正在进行的游戏启动。
''' </summary>
Public Sub McLaunchCancel()
If McLaunchLoaderReal IsNot Nothing Then
McLaunchLoaderReal.Cancel()
McLaunchLog("已取消启动")
Try
If McLaunchWatcher IsNot Nothing Then
McLaunchWatcher.Kill()
ElseIf McLaunchProcess IsNot Nothing Then
If Not McLaunchProcess.HasExited Then McLaunchProcess.Kill()
End If
Catch ex As Exception
Logger.Error(ex, "取消启动结束进程失败", LogBehavior.Toast)
End Try
End If
End Sub
#End Region #End Region
#Region "内存优化" #Region "内存优化"
@@ -692,19 +692,7 @@ ExitRefresh:
End Sub End Sub
'取消按钮 '取消按钮
Private Sub BtnCancel_Click() Handles BtnCancel.Click Private Sub BtnCancel_Click() Handles BtnCancel.Click
If McLaunchLoaderReal IsNot Nothing Then McLaunchCancel()
McLaunchLoaderReal.Cancel()
McLaunchLog("已取消启动")
Try
If McLaunchWatcher IsNot Nothing Then
McLaunchWatcher.Kill()
ElseIf McLaunchProcess IsNot Nothing Then
If Not McLaunchProcess.HasExited Then McLaunchProcess.Kill()
End If
Catch ex As Exception
Logger.Error(ex, "取消启动结束进程失败", LogBehavior.Toast)
End Try
End If
End Sub End Sub
'版本设置按钮 '版本设置按钮
Private Sub BtnMore_Click() Handles BtnMore.Click Private Sub BtnMore_Click() Handles BtnMore.Click