Compare commits
2 Commits
3178b031e4
...
c1bd5e6cfb
| Author | SHA1 | Date |
|---|---|---|
|
|
c1bd5e6cfb | |
|
|
6d4e09d49c |
|
|
@ -11,4 +11,6 @@ public interface IMgSessionService<TSessionItem> where TSessionItem : IMgSession
|
|||
public bool TryGetSessionItem(string sessionId, out TSessionItem sessionItem);
|
||||
public bool TryRemoveSessionItem(string sessionId, out TSessionItem sessionItem);
|
||||
public int Count();
|
||||
|
||||
bool TryGetSessionItemBySignlaRConnectionId(string signalRConnectionId, out TSessionItem? sessionItem);
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
using Microsoft.Extensions.Hosting;
|
||||
using Nop.Services.Logging;
|
||||
|
||||
namespace Mango.Nop.Services;
|
||||
|
||||
public abstract class MgBackgroundServiceBase(ILogger logger, IServiceProvider service) : BackgroundService
|
||||
{
|
||||
protected abstract Task OnExecuteAsync();
|
||||
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
while (!stoppingToken.IsCancellationRequested)
|
||||
{
|
||||
try
|
||||
{
|
||||
await logger.InformationAsync($"MgBackgroundServiceBase.ExecuteAsync(); Processing ExecuteAsync");
|
||||
await OnExecuteAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await logger.ErrorAsync($"MgBackgroundServiceBase.ExecuteAsync(); Failure while processing ExecuteAsync", ex, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override async Task StartAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
await logger.InformationAsync("MgBackgroundServiceBase.ExecuteAsync(); Starting MgBackgroundServiceBase");
|
||||
await base.StartAsync(cancellationToken);
|
||||
}
|
||||
|
||||
public override async Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
await logger.InformationAsync("MgBackgroundServiceBase.StopAsync(); Stopping MgBackgroundServiceBase");
|
||||
await base.StopAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
|
|
@ -37,4 +37,10 @@ public abstract class MgSessionService<TSessionItem> : IMgSessionService<TSessio
|
|||
}
|
||||
|
||||
public int Count() => Sessions.Count;
|
||||
|
||||
public bool TryGetSessionItemBySignlaRConnectionId(string signalRConnectionId, out TSessionItem? sessionItem)
|
||||
{
|
||||
sessionItem = Sessions.Values.FirstOrDefault(x => x.SignaRConnectionId == signalRConnectionId);
|
||||
return sessionItem != null;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue