Преглед изворни кода

Add safety checks and UI improvements for dynamic thread limiting

Co-authored-by: LTCatt <[email protected]>
copilot-swe-agent[bot] пре 1 година
родитељ
комит
97fcd89275

+ 2 - 0
Plain Craft Launcher 2/Application.xaml.vb

@@ -134,6 +134,8 @@ WaitRetry:
             Setup.Load("SystemDebugMode")
             Setup.Load("SystemDebugMode")
             Setup.Load("SystemDebugAnim")
             Setup.Load("SystemDebugAnim")
             Setup.Load("ToolDownloadThread")
             Setup.Load("ToolDownloadThread")
+            ' 确保动态线程限制正确初始化
+            If NetTaskThreadLimitDynamic = 0 Then NetTaskThreadLimitDynamic = NetTaskThreadLimit
             Setup.Load("ToolDownloadCert")
             Setup.Load("ToolDownloadCert")
             Setup.Load("ToolDownloadSpeed")
             Setup.Load("ToolDownloadSpeed")
             '网络配置初始化
             '网络配置初始化

+ 3 - 0
Plain Craft Launcher 2/Modules/Base/ModNet.vb

@@ -1706,6 +1706,9 @@ Retry:
 #Region "动态线程限制恢复"
 #Region "动态线程限制恢复"
                 ' 如果距离上次系统缓冲区错误已超过 30 秒,逐步恢复线程限制
                 ' 如果距离上次系统缓冲区错误已超过 30 秒,逐步恢复线程限制
                 SyncLock NetTaskSocketBufferErrorsLock
                 SyncLock NetTaskSocketBufferErrorsLock
+                    ' 安全检查:确保动态限制在合理范围内
+                    NetTaskThreadLimitDynamic = Math.Max(Math.Min(NetTaskThreadLimitDynamic, NetTaskThreadLimit), 1)
+                    
                     If NetTaskLastSocketBufferError > 0 AndAlso GetTimeTick() - NetTaskLastSocketBufferError > 30000 Then
                     If NetTaskLastSocketBufferError > 0 AndAlso GetTimeTick() - NetTaskLastSocketBufferError > 30000 Then
                         If NetTaskThreadLimitDynamic < NetTaskThreadLimit Then
                         If NetTaskThreadLimitDynamic < NetTaskThreadLimit Then
                             NetTaskThreadLimitDynamic = Math.Min(NetTaskThreadLimitDynamic + 1, NetTaskThreadLimit)
                             NetTaskThreadLimitDynamic = Math.Min(NetTaskThreadLimitDynamic + 1, NetTaskThreadLimit)

+ 2 - 2
Plain Craft Launcher 2/Pages/PageSpeedLeft.xaml.vb

@@ -43,7 +43,7 @@ Public Class PageSpeedLeft
                 LabProgress.Text = "100 %"
                 LabProgress.Text = "100 %"
                 LabSpeed.Text = "0 B/s"
                 LabSpeed.Text = "0 B/s"
                 LabFile.Text = "0"
                 LabFile.Text = "0"
-                LabThread.Text = "0 / " & NetTaskThreadLimit
+                LabThread.Text = "0 / " & If(NetTaskThreadLimitDynamic <> NetTaskThreadLimit, $"{NetTaskThreadLimitDynamic}({NetTaskThreadLimit})", NetTaskThreadLimit.ToString())
             Else
             Else
                 '有任务,输出基本信息
                 '有任务,输出基本信息
                 Dim Tasks = LoaderTaskbar.Where(Function(l) l.Show).ToList() '筛选掉启动 MC 的任务(#6270)
                 Dim Tasks = LoaderTaskbar.Where(Function(l) l.Show).ToList() '筛选掉启动 MC 的任务(#6270)
@@ -52,7 +52,7 @@ Public Class PageSpeedLeft
                 LabProgress.Text = If(RawPercent > 0.999999, "100 %", PredictText)
                 LabProgress.Text = If(RawPercent > 0.999999, "100 %", PredictText)
                 LabSpeed.Text = GetString(NetManager.Speed) & "/s"
                 LabSpeed.Text = GetString(NetManager.Speed) & "/s"
                 LabFile.Text = If(NetManager.FileRemain < 0, "0*", NetManager.FileRemain)
                 LabFile.Text = If(NetManager.FileRemain < 0, "0*", NetManager.FileRemain)
-                LabThread.Text = NetTaskThreadCount & " / " & NetTaskThreadLimit
+                LabThread.Text = NetTaskThreadCount & " / " & If(NetTaskThreadLimitDynamic <> NetTaskThreadLimit, $"{NetTaskThreadLimitDynamic}({NetTaskThreadLimit})", NetTaskThreadLimit.ToString())
             End If
             End If
 #End Region
 #End Region