This commit is contained in:
FanLian
2023-08-15 16:30:56 +08:00

View File

@@ -44,9 +44,10 @@ namespace Tnb.WarehouseMgr
static TimedTaskBackgroundService() static TimedTaskBackgroundService()
{ {
_timedFuncMap = App.EffectiveTypes.AsParallel().Where(t => !t.Namespace.IsNullOrWhiteSpace() && t.Namespace.Contains("Tnb.WarehouseMgr")).SelectMany(t => t.GetMethods()) _timedFuncMap = App.EffectiveTypes.AsParallel().Where(t => !t.Namespace.IsNullOrWhiteSpace() && t.Namespace.Contains("Tnb.WarehouseMgr")).SelectMany(t => t.GetMethods())
.Where(m => m.GetCustomAttribute<TimedAttribute>() != null) .Where(m => m.GetCustomAttribute<TimedAttribute>() != null)
.ToDictionary(x => x.Name, x => .ToDictionary(x => x.Name, x =>
(Func<CancellationTokenSource?, Task>)Delegate.CreateDelegate(typeof(Func<CancellationTokenSource?, Task>), App.GetService(x.DeclaringType), x)); (Func<CancellationTokenSource?, Task>)Delegate.CreateDelegate(typeof(Func<CancellationTokenSource?, Task>), App.GetService(x.DeclaringType), x));
} }
public TimedTaskBackgroundService(IServiceProvider serviceProvider) public TimedTaskBackgroundService(IServiceProvider serviceProvider)
{ {
@@ -59,7 +60,7 @@ namespace Tnb.WarehouseMgr
var channelReader = _serviceProvider.GetRequiredService<ITaskMessageNotify>().Reader; var channelReader = _serviceProvider.GetRequiredService<ITaskMessageNotify>().Reader;
CancellationTokenSource? cts = new(); CancellationTokenSource? cts = new();
while (channelReader != null && await channelReader.WaitToReadAsync()) while (channelReader != null && await channelReader.WaitToReadAsync())
{ {
while (channelReader.TryRead(out var message)) while (channelReader.TryRead(out var message))