手动启动,定时新增字典缓存,避免多次反射影响性能

This commit is contained in:
alex
2023-09-18 15:07:04 +08:00
parent 0ac46b6e65
commit 6cc0529d60
2 changed files with 16 additions and 17 deletions

View File

@@ -62,25 +62,17 @@ namespace Tnb.WarehouseMgr
static BaseWareHouseService() static BaseWareHouseService()
{ {
//_stroageMapLazy = new Lazy<Dictionary<string, IWHStorageService>>(() => var serviceTypes = App.EffectiveTypes.Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(IWHStorageService).IsAssignableFrom(u)).ToList();
foreach (var serviceType in serviceTypes)
{ {
//Dictionary<string, IWHStorageService> map = new(StringComparer.OrdinalIgnoreCase); var callerName = serviceType.GetCustomAttribute<CallerAttribute>()?.Name ?? string.Empty;
var serviceTypes = App.EffectiveTypes.Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(IWHStorageService).IsAssignableFrom(u)).ToList(); if (!callerName.IsNullOrEmpty())
foreach (var serviceType in serviceTypes)
{ {
var callerName = serviceType.GetCustomAttribute<CallerAttribute>()?.Name ?? string.Empty; var obj = Activator.CreateInstance(serviceType) as IWHStorageService;
if (!callerName.IsNullOrEmpty()) if (obj == null) continue;
{ _storeMap[callerName] = obj;
var obj = Activator.CreateInstance(serviceType) as IWHStorageService;
if (obj == null) continue;
_storeMap[callerName] = obj;
}
} }
//return map;
} }
//);
} }
protected Task<ClaimsPrincipal> GetUserIdentity(string? asscessToken = null) protected Task<ClaimsPrincipal> GetUserIdentity(string? asscessToken = null)

View File

@@ -144,6 +144,7 @@ public class OAuthService : IDynamicApiController, ITransient
private readonly IMHandler _imHandler; private readonly IMHandler _imHandler;
private readonly BackgroundService _backgroundService; //added by ly on 20230916 private readonly BackgroundService _backgroundService; //added by ly on 20230916
private static Dictionary<string, bool> _hostSvcRun = new();
@@ -294,11 +295,17 @@ public class OAuthService : IDynamicApiController, ITransient
//modify by ly on 20230918 登录成功后启动定时服务 //modify by ly on 20230918 登录成功后启动定时服务
if (!userId.IsNullOrWhiteSpace()) if (!userId.IsNullOrWhiteSpace())
{ {
var isStartedProperty = _backgroundService.GetType().GetProperty("IsStarted"); if (!_hostSvcRun.TryGetValue("IsStarted", out bool isStarted))
if (isStartedProperty?.GetValue(_backgroundService) is bool isStarted && !isStarted) {
var isStartedProperty = _backgroundService.GetType().GetProperty("IsStarted");
isStarted = Convert.ToBoolean(isStartedProperty?.GetValue(_backgroundService));
_hostSvcRun["IsStarted"] = isStarted;
}
if (!isStarted)
{ {
await _backgroundService.StartAsync(CancellationToken.None); await _backgroundService.StartAsync(CancellationToken.None);
} }
} }