From 156ed88bd6aa811ebaf6f85535970b4ed6120490 Mon Sep 17 00:00:00 2001
From: "2248356998 qq.com" <2248356998@qq.com>
Date: Mon, 29 Sep 2025 17:09:12 +0800
Subject: [PATCH] 10.11.80
---
.../Layout/BlazorApp.razor | 16 +++----
.../Layout/MainLayout.razor | 2 +-
.../ThingsGateway.Common.csproj | 2 +-
.../Factories/SchedulerFactory.Internal.cs | 2 +-
src/Directory.Build.props | 8 ++--
.../Extension/ChannelOptionsExtensions.cs | 12 ++---
.../Driver/DriverBase.cs | 2 +-
.../Services/Channel/ChannelRuntimeService.cs | 8 ++--
.../Services/Device/DeviceRuntimeService.cs | 2 +-
.../DeviceManage/DeviceThreadManage.cs | 1 +
.../Services/RuntimeServiceHelper.cs | 6 +--
.../ChannelDeviceTree.razor.cs | 48 +++++++++++++------
.../Device/DeviceEditComponent.razor.cs | 22 +++++++--
.../Variable/VariableEditComponent.razor.cs | 34 ++++++++++---
.../MainLayout.razor | 2 +-
.../Benchmark/ModbusBenchmark.cs | 2 -
.../Benchmark/S7Benchmark.cs | 2 -
.../SqlHistoryAlarm/SqlHistoryAlarm.cs | 2 +
.../Layout/BlazorAppNet8.razor | 12 ++---
.../Layout/MainLayout.razor | 2 +-
20 files changed, 120 insertions(+), 67 deletions(-)
diff --git a/src/Admin/ThingsGateway.AdminServer/Layout/BlazorApp.razor b/src/Admin/ThingsGateway.AdminServer/Layout/BlazorApp.razor
index 61bd17cf3..a11e0b0fc 100644
--- a/src/Admin/ThingsGateway.AdminServer/Layout/BlazorApp.razor
+++ b/src/Admin/ThingsGateway.AdminServer/Layout/BlazorApp.razor
@@ -21,12 +21,12 @@
ThingsGateway
-
-
-
-
-
-
+
+
+
+
+
+
@* *@
@@ -40,8 +40,8 @@
-
-
+
+
diff --git a/src/Admin/ThingsGateway.AdminServer/Layout/MainLayout.razor b/src/Admin/ThingsGateway.AdminServer/Layout/MainLayout.razor
index de5a6f1f2..be0a91c51 100644
--- a/src/Admin/ThingsGateway.AdminServer/Layout/MainLayout.razor
+++ b/src/Admin/ThingsGateway.AdminServer/Layout/MainLayout.razor
@@ -70,7 +70,7 @@
}
@* 版本号 *@
-
+
@* 主题切换 *@
@* *@
diff --git a/src/Admin/ThingsGateway.Common/ThingsGateway.Common.csproj b/src/Admin/ThingsGateway.Common/ThingsGateway.Common.csproj
index 7f24b5a53..90c3fbf44 100644
--- a/src/Admin/ThingsGateway.Common/ThingsGateway.Common.csproj
+++ b/src/Admin/ThingsGateway.Common/ThingsGateway.Common.csproj
@@ -14,7 +14,7 @@
-
+
diff --git a/src/Admin/ThingsGateway.Furion/Schedule/Factories/SchedulerFactory.Internal.cs b/src/Admin/ThingsGateway.Furion/Schedule/Factories/SchedulerFactory.Internal.cs
index 1c7054c53..6cedcc93d 100644
--- a/src/Admin/ThingsGateway.Furion/Schedule/Factories/SchedulerFactory.Internal.cs
+++ b/src/Admin/ThingsGateway.Furion/Schedule/Factories/SchedulerFactory.Internal.cs
@@ -204,7 +204,7 @@ internal sealed partial class SchedulerFactory : ISchedulerFactory
}
else
{
- _logger.LogWarning("Schedule hosted service preload completed, and a total of <{Count}> schedulers are appended.", _schedulers.Count);
+ _logger.LogInformation("Schedule hosted service preload completed, and a total of <{Count}> schedulers are appended.", _schedulers.Count);
}
}
}
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 983225aeb..e0a2a2df2 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -1,9 +1,9 @@
- 10.11.78
- 10.11.78
- 10.11.78
+ 10.11.80
+ 10.11.80
+ 10.11.80
10.11.6
10.11.6
8.0.20
@@ -12,7 +12,7 @@
false
10.11.70
10.11.70
- 4.0.0-beta.70
+ 4.0.0-beta.80
diff --git a/src/Foundation/ThingsGateway.Foundation/Channel/Extension/ChannelOptionsExtensions.cs b/src/Foundation/ThingsGateway.Foundation/Channel/Extension/ChannelOptionsExtensions.cs
index 3af329860..5086c412d 100644
--- a/src/Foundation/ThingsGateway.Foundation/Channel/Extension/ChannelOptionsExtensions.cs
+++ b/src/Foundation/ThingsGateway.Foundation/Channel/Extension/ChannelOptionsExtensions.cs
@@ -99,16 +99,16 @@ public static class ChannelOptionsExtensions
if (channelOptions.MaxClientCount > 0)
config.SetMaxCount(channelOptions.MaxClientCount);
- config.SetTransportOption(new TouchSocket.Sockets.TransportOption()
+ config.SetTransportOption(a =>
{
- SendPipeOptions = new System.IO.Pipelines.PipeOptions(
- minimumSegmentSize: 1024,
- useSynchronizationContext: false),
- ReceivePipeOptions = new System.IO.Pipelines.PipeOptions(
+ a.SendPipeOptions = new System.IO.Pipelines.PipeOptions(
minimumSegmentSize: 1024,
+ useSynchronizationContext: false);
+ a.ReceivePipeOptions = new System.IO.Pipelines.PipeOptions(
pauseWriterThreshold: 1024 * 1024,
resumeWriterThreshold: 1024 * 512,
- useSynchronizationContext: false)
+ minimumSegmentSize: 1024,
+ useSynchronizationContext: false);
});
switch (channelType)
diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Driver/DriverBase.cs b/src/Gateway/ThingsGateway.Gateway.Application/Driver/DriverBase.cs
index 4f316419d..95f669ea8 100644
--- a/src/Gateway/ThingsGateway.Gateway.Application/Driver/DriverBase.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Application/Driver/DriverBase.cs
@@ -378,7 +378,7 @@ public abstract class DriverBase : AsyncDisposableObject, IDriver
// 记录设备线程已停止的信息
LogMessage?.LogInformation(string.Format(AppResource.DeviceTaskStop, DeviceName));
- await Task.Delay(1000).ConfigureAwait(false);
+ await Task.Delay(50).ConfigureAwait(false);
// 执行资源释放操作
await this.SafeDisposeAsync().ConfigureAwait(false);
diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Services/Channel/ChannelRuntimeService.cs b/src/Gateway/ThingsGateway.Gateway.Application/Services/Channel/ChannelRuntimeService.cs
index 0f44019f5..f468a5e37 100644
--- a/src/Gateway/ThingsGateway.Gateway.Application/Services/Channel/ChannelRuntimeService.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Application/Services/Channel/ChannelRuntimeService.cs
@@ -176,8 +176,8 @@ public class ChannelRuntimeService : IChannelRuntimeService
if (restart)
{
await GlobalData.ChannelThreadManage.RestartChannelAsync(newChannelRuntimes).ConfigureAwait(false);
-
- await RuntimeServiceHelper.ChangedDriverAsync(GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a=> !newDeviceRuntimes.Contains(a)).ToArray(),_logger).ConfigureAwait(false);
+
+ await RuntimeServiceHelper.ChangedDriverAsync(GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a => !newDeviceRuntimes.Contains(a)).ToArray(), _logger).ConfigureAwait(false);
}
return true;
@@ -209,7 +209,7 @@ public class ChannelRuntimeService : IChannelRuntimeService
{
await GlobalData.ChannelThreadManage.RestartChannelAsync(newChannelRuntimes).ConfigureAwait(false);
- await RuntimeServiceHelper.ChangedDriverAsync(GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a => !newDeviceRuntimes.Contains(a)).ToArray(),_logger).ConfigureAwait(false);
+ await RuntimeServiceHelper.ChangedDriverAsync(GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a => !newDeviceRuntimes.Contains(a)).ToArray(), _logger).ConfigureAwait(false);
}
return true;
@@ -241,7 +241,7 @@ public class ChannelRuntimeService : IChannelRuntimeService
{
await GlobalData.ChannelThreadManage.RestartChannelAsync(newChannelRuntimes).ConfigureAwait(false);
- await RuntimeServiceHelper.ChangedDriverAsync(GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a => !newDeviceRuntimes.Contains(a)).ToArray(),_logger).ConfigureAwait(false);
+ await RuntimeServiceHelper.ChangedDriverAsync(GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a => !newDeviceRuntimes.Contains(a)).ToArray(), _logger).ConfigureAwait(false);
}
return true;
diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Services/Device/DeviceRuntimeService.cs b/src/Gateway/ThingsGateway.Gateway.Application/Services/Device/DeviceRuntimeService.cs
index 4399d3af7..b23da6f1c 100644
--- a/src/Gateway/ThingsGateway.Gateway.Application/Services/Device/DeviceRuntimeService.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Application/Services/Device/DeviceRuntimeService.cs
@@ -205,7 +205,7 @@ public class DeviceRuntimeService : IDeviceRuntimeService
if (restart)
{
await RuntimeServiceHelper.RestartDeviceAsync(newDeviceRuntimes).ConfigureAwait(false);
- await RuntimeServiceHelper.ChangedDriverAsync(GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a => !newDeviceRuntimes.Contains(a)).ToArray(),_logger).ConfigureAwait(false);
+ await RuntimeServiceHelper.ChangedDriverAsync(GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a => !newDeviceRuntimes.Contains(a)).ToArray(), _logger).ConfigureAwait(false);
}
return true;
diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Services/GatewayMonitor/DeviceManage/DeviceThreadManage.cs b/src/Gateway/ThingsGateway.Gateway.Application/Services/GatewayMonitor/DeviceManage/DeviceThreadManage.cs
index d2c33924c..fff30a7cc 100644
--- a/src/Gateway/ThingsGateway.Gateway.Application/Services/GatewayMonitor/DeviceManage/DeviceThreadManage.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Application/Services/GatewayMonitor/DeviceManage/DeviceThreadManage.cs
@@ -820,6 +820,7 @@ internal sealed class DeviceThreadManage : IAsyncDisposable, IDeviceThreadManage
LogMessage?.LogInformation(string.Format(AppResource.ChannelDispose, CurrentChannel?.Name ?? string.Empty));
+ await Task.Delay(50).ConfigureAwait(false);
LogMessage?.Logs?.ForEach(a => a.TryDispose());
}
finally
diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Services/RuntimeServiceHelper.cs b/src/Gateway/ThingsGateway.Gateway.Application/Services/RuntimeServiceHelper.cs
index b54a7477f..2b79855a1 100644
--- a/src/Gateway/ThingsGateway.Gateway.Application/Services/RuntimeServiceHelper.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Application/Services/RuntimeServiceHelper.cs
@@ -239,7 +239,7 @@ internal static class RuntimeServiceHelper
if (group.Key != null)
await group.Key.RestartDeviceAsync(group.Value, false).ConfigureAwait(false);
}
- foreach (var group in GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a=>!newDeviceRuntimes.Contains(a)).Where(a => a.Driver?.DeviceThreadManage != null).GroupBy(a => a.Driver.DeviceThreadManage))
+ foreach (var group in GlobalData.GetAllVariableBusinessDeviceRuntime().Where(a => !newDeviceRuntimes.Contains(a)).Where(a => a.Driver?.DeviceThreadManage != null).GroupBy(a => a.Driver.DeviceThreadManage))
{
if (group.Key != null)
await group.Key.RestartDeviceAsync(group.ToArray(), false).ConfigureAwait(false);
@@ -268,9 +268,9 @@ internal static class RuntimeServiceHelper
}
- public static async Task ChangedDriverAsync(DeviceRuntime[] channelDevice, ILogger logger)
+ public static async Task ChangedDriverAsync(DeviceRuntime[] channelDevice, ILogger logger)
{
-
+
await channelDevice.ParallelForEachAsync(async (item, token) =>
{
diff --git a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/ChannelDeviceTree.razor.cs b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/ChannelDeviceTree.razor.cs
index 30d6e1693..cb7c30bce 100644
--- a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/ChannelDeviceTree.razor.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/ChannelDeviceTree.razor.cs
@@ -13,6 +13,7 @@ using Microsoft.AspNetCore.Components.Web;
using ThingsGateway.Admin.Application;
using ThingsGateway.Admin.Razor;
+using ThingsGateway.NewLife;
using ThingsGateway.NewLife.Extension;
using ThingsGateway.NewLife.Json.Extension;
using ThingsGateway.SqlSugar;
@@ -1319,17 +1320,26 @@ EventCallback.Factory.Create(this, async e =>
private TreeViewItem UnknownTreeViewItem;
SmartTriggerScheduler? scheduler;
-
+ private bool _initialized;
public override async Task SetParametersAsync(ParameterView parameters)
{
-
parameters.SetParameterProperties(this);
- OnInitialized();
- await OnInitializedAsync();
- OnParametersSet();
- StateHasChanged();
- await OnParametersSetAsync();
+ if (!_initialized)
+ {
+ _initialized = true;
+ OnInitialized();
+ await OnInitializedAsync();
+ OnParametersSet();
+ StateHasChanged();
+ await OnParametersSetAsync();
+ }
+ else
+ {
+ OnParametersSet();
+ StateHasChanged();
+ await OnParametersSetAsync();
+ }
}
protected override async Task OnInitializedAsync()
@@ -1402,19 +1412,29 @@ EventCallback.Factory.Create(this, async e =>
await base.OnInitializedAsync();
}
-
+ WaitLock WaitLock = new(nameof(ChannelDeviceTree));
private async Task Notify(CancellationToken cancellationToken)
{
if (cancellationToken.IsCancellationRequested) return;
if (Disposed) return;
- await OnClickSearch(SearchText);
-
- Value = GetValue(Value);
- if (ChannelDeviceChanged != null)
+ try
{
- await ChannelDeviceChanged.Invoke(Value);
+ await WaitLock.WaitAsync(cancellationToken);
+
+ await OnClickSearch(SearchText);
+
+ Value = GetValue(Value);
+ if (ChannelDeviceChanged != null)
+ {
+ await ChannelDeviceChanged.Invoke(Value);
+ }
+ await InvokeAsync(StateHasChanged);
+
+ }
+ finally
+ {
+ WaitLock.Release();
}
- await InvokeAsync(StateHasChanged);
}
private static ChannelDeviceTreeItem GetValue(ChannelDeviceTreeItem channelDeviceTreeItem)
diff --git a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Device/DeviceEditComponent.razor.cs b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Device/DeviceEditComponent.razor.cs
index 6b0d5ad66..c9a59b6bc 100644
--- a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Device/DeviceEditComponent.razor.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Device/DeviceEditComponent.razor.cs
@@ -120,6 +120,7 @@ public partial class DeviceEditComponent
private string ChannelName;
private string DeviceName;
+ private bool _initialized;
public override async Task SetParametersAsync(ParameterView parameters)
{
if (ChannelName.IsNullOrEmpty())
@@ -127,11 +128,22 @@ public partial class DeviceEditComponent
parameters.SetParameterProperties(this);
ChannelName = await ChannelPageService.GetChannelNameAsync(Model?.ChannelId ?? 0);
DeviceName = await DevicePageService.GetDeviceNameAsync(Model?.RedundantDeviceId ?? 0);
- OnInitialized();
- await OnInitializedAsync();
- OnParametersSet();
- StateHasChanged();
- await OnParametersSetAsync();
+ if (!_initialized)
+ {
+ _initialized = true;
+
+ OnInitialized();
+ await OnInitializedAsync();
+ OnParametersSet();
+ StateHasChanged();
+ await OnParametersSetAsync();
+ }
+ else
+ {
+ OnParametersSet();
+ StateHasChanged();
+ await OnParametersSetAsync();
+ }
}
else
{
diff --git a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/VariableEditComponent.razor.cs b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/VariableEditComponent.razor.cs
index e69f0c419..4ee70887c 100644
--- a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/VariableEditComponent.razor.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/VariableEditComponent.razor.cs
@@ -49,6 +49,11 @@ public partial class VariableEditComponent
private string DeviceName;
private string ChoiceBusinessDeviceName;
private bool first = false;
+
+
+ private bool _initialized;
+
+
public override async Task SetParametersAsync(ParameterView parameters)
{
if (DeviceName.IsNullOrEmpty() && first == false)
@@ -56,14 +61,31 @@ public partial class VariableEditComponent
first = true;
parameters.SetParameterProperties(this);
DeviceName = await DevicePageService.GetDeviceNameAsync(Model?.DeviceId ?? 0);
- OnInitialized();
- await OnInitializedAsync();
- OnParametersSet();
+ if (!_initialized)
+ {
+ _initialized = true;
- ChoiceBusinessDeviceId = ChoiceBusinessDeviceId > 0 ? ChoiceBusinessDeviceId : (await DevicePageService.OnDeviceSelectedItemQueryAsync(new VirtualizeQueryOption() { Count = 1 }, false).ConfigureAwait(false)).Items.FirstOrDefault()?.Value?.ToLong() ?? 0;
- ChoiceBusinessDeviceName = (await DevicePageService.GetDeviceNameAsync(ChoiceBusinessDeviceId)) ?? string.Empty;
+ OnInitialized();
+ await OnInitializedAsync();
+ OnParametersSet();
+
+ ChoiceBusinessDeviceId = ChoiceBusinessDeviceId > 0 ? ChoiceBusinessDeviceId : (await DevicePageService.OnDeviceSelectedItemQueryAsync(new VirtualizeQueryOption() { Count = 1 }, false).ConfigureAwait(false)).Items.FirstOrDefault()?.Value?.ToLong() ?? 0;
+ ChoiceBusinessDeviceName = (await DevicePageService.GetDeviceNameAsync(ChoiceBusinessDeviceId)) ?? string.Empty;
+
+ await InvokeAsync(StateHasChanged);
+ await OnParametersSetAsync();
+ }
+ else
+ {
+ OnParametersSet();
+
+ ChoiceBusinessDeviceId = ChoiceBusinessDeviceId > 0 ? ChoiceBusinessDeviceId : (await DevicePageService.OnDeviceSelectedItemQueryAsync(new VirtualizeQueryOption() { Count = 1 }, false).ConfigureAwait(false)).Items.FirstOrDefault()?.Value?.ToLong() ?? 0;
+ ChoiceBusinessDeviceName = (await DevicePageService.GetDeviceNameAsync(ChoiceBusinessDeviceId)) ?? string.Empty;
+ await InvokeAsync(StateHasChanged);
+
+ await OnParametersSetAsync();
+ }
- await InvokeAsync(StateHasChanged);
await OnParametersSetAsync();
diff --git a/src/Plugin/ThingsGateway.Debug.Photino/MainLayout.razor b/src/Plugin/ThingsGateway.Debug.Photino/MainLayout.razor
index 4401c9402..560fa7b50 100644
--- a/src/Plugin/ThingsGateway.Debug.Photino/MainLayout.razor
+++ b/src/Plugin/ThingsGateway.Debug.Photino/MainLayout.razor
@@ -36,7 +36,7 @@
}
@* 版本号 *@
-
+
@* 主题切换 *@
@* *@
diff --git a/src/Plugin/ThingsGateway.Foundation.Benchmark/Benchmark/ModbusBenchmark.cs b/src/Plugin/ThingsGateway.Foundation.Benchmark/Benchmark/ModbusBenchmark.cs
index 3936fdafb..7cf37fe69 100644
--- a/src/Plugin/ThingsGateway.Foundation.Benchmark/Benchmark/ModbusBenchmark.cs
+++ b/src/Plugin/ThingsGateway.Foundation.Benchmark/Benchmark/ModbusBenchmark.cs
@@ -8,8 +8,6 @@
// QQ群:605534569
//------------------------------------------------------------------------------
-using BenchmarkConsoleApp;
-
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Diagnosers;
using BenchmarkDotNet.Jobs;
diff --git a/src/Plugin/ThingsGateway.Foundation.Benchmark/Benchmark/S7Benchmark.cs b/src/Plugin/ThingsGateway.Foundation.Benchmark/Benchmark/S7Benchmark.cs
index 5a355db25..b512ddfab 100644
--- a/src/Plugin/ThingsGateway.Foundation.Benchmark/Benchmark/S7Benchmark.cs
+++ b/src/Plugin/ThingsGateway.Foundation.Benchmark/Benchmark/S7Benchmark.cs
@@ -8,8 +8,6 @@
// QQ群:605534569
//------------------------------------------------------------------------------
-using BenchmarkConsoleApp;
-
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Diagnosers;
using BenchmarkDotNet.Jobs;
diff --git a/src/Plugin/ThingsGateway.Plugin.DB/SqlHistoryAlarm/SqlHistoryAlarm.cs b/src/Plugin/ThingsGateway.Plugin.DB/SqlHistoryAlarm/SqlHistoryAlarm.cs
index fcb3a14be..80511e479 100644
--- a/src/Plugin/ThingsGateway.Plugin.DB/SqlHistoryAlarm/SqlHistoryAlarm.cs
+++ b/src/Plugin/ThingsGateway.Plugin.DB/SqlHistoryAlarm/SqlHistoryAlarm.cs
@@ -93,6 +93,8 @@ public partial class SqlHistoryAlarm : BusinessBaseWithCacheAlarm
{
try
{
+ if (_driverPropertys.VariableAlarmEnable == false) return;
+
using var db = BusinessDatabaseUtil.GetDb((DbType)_driverPropertys.DbType, _driverPropertys.BigTextConnectStr);
if (!_driverPropertys.BigTextScriptHistoryTable.IsNullOrEmpty())
{
diff --git a/src/ThingsGateway.Server/Layout/BlazorAppNet8.razor b/src/ThingsGateway.Server/Layout/BlazorAppNet8.razor
index 1035b7e19..e686aac14 100644
--- a/src/ThingsGateway.Server/Layout/BlazorAppNet8.razor
+++ b/src/ThingsGateway.Server/Layout/BlazorAppNet8.razor
@@ -21,12 +21,12 @@
ThingsGateway
-
-
-
-
-
-
+
+
+
+
+
+
@* *@
diff --git a/src/ThingsGateway.Server/Layout/MainLayout.razor b/src/ThingsGateway.Server/Layout/MainLayout.razor
index e8db2ae22..6ba48b7a8 100644
--- a/src/ThingsGateway.Server/Layout/MainLayout.razor
+++ b/src/ThingsGateway.Server/Layout/MainLayout.razor
@@ -69,7 +69,7 @@
}
@* 版本号 *@
-
+
@* 主题切换 *@
@* *@