diff --git a/src/Admin/ThingsGateway.Common/ThingsGateway.Common.csproj b/src/Admin/ThingsGateway.Common/ThingsGateway.Common.csproj
index f2009f12d..48d8cecb6 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.NewLife.X/Common/ExpiringDictionary.cs b/src/Admin/ThingsGateway.NewLife.X/Common/ExpiringDictionary.cs
index e20ed8780..732227dcb 100644
--- a/src/Admin/ThingsGateway.NewLife.X/Common/ExpiringDictionary.cs
+++ b/src/Admin/ThingsGateway.NewLife.X/Common/ExpiringDictionary.cs
@@ -1,4 +1,5 @@
using System.Collections.Concurrent;
+using System.Runtime.CompilerServices;
using ThingsGateway.NewLife.Threading;
namespace ThingsGateway.NewLife;
@@ -51,18 +52,20 @@ public class ExpiringDictionary : IDisposable
return rs;
}
}
+ private ConcurrentDictionary _dict;
- private ConcurrentDictionary _dict = new();
private readonly TimerX _cleanupTimer;
private int defaultExpire = 60;
- public ExpiringDictionary(int expire = 60)
+ IEqualityComparer? comparer;
+ public ExpiringDictionary(int expire = 60, IEqualityComparer? comparer = null)
{
defaultExpire = expire;
+ this.comparer = comparer;
+ _dict = new ConcurrentDictionary(comparer);
+
_cleanupTimer = new TimerX(TimerClear, null, 10000, 10000) { Async = true };
}
-
-
public bool TryAdd(TKey key, TValue value)
{
if (_dict.TryGetValue(key, out var item))
@@ -109,7 +112,7 @@ public class ExpiringDictionary : IDisposable
private void Clear(object? state)
{
var data = _dict;
- _dict = new();
+ _dict = new(comparer);
data.Clear();
}
private void TimerClear(object? state)
@@ -143,3 +146,4 @@ public class ExpiringDictionary : IDisposable
_cleanupTimer.Dispose();
}
}
+
diff --git a/src/Admin/ThingsGateway.SqlSugar/ThingsGateway.SqlSugar.csproj b/src/Admin/ThingsGateway.SqlSugar/ThingsGateway.SqlSugar.csproj
index 236abb739..c48a183cc 100644
--- a/src/Admin/ThingsGateway.SqlSugar/ThingsGateway.SqlSugar.csproj
+++ b/src/Admin/ThingsGateway.SqlSugar/ThingsGateway.SqlSugar.csproj
@@ -31,7 +31,7 @@
-
+
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 83aaa70a3..fd8148b7a 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -1,9 +1,9 @@
- 10.11.101
- 10.11.101
- 10.11.101
+ 10.11.102
+ 10.11.102
+ 10.11.102
10.11.6
10.11.6
8.0.20
diff --git a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/VariableRow.razor.cs b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/VariableRow.razor.cs
index 9abcf91a2..8c0b08be8 100644
--- a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/VariableRow.razor.cs
+++ b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/VariableRow.razor.cs
@@ -57,7 +57,7 @@ public partial class VariableRow : IDisposable
///
///
///
- protected RenderFragment GetValue(ITableColumn col, VariableRuntime item) => builder =>
+ protected static RenderFragment GetValue(ITableColumn col, VariableRuntime item) => builder =>
{
if (col.Template != null)
{