adding
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace OwnerNumberMigration.Migrations;
|
||||
|
||||
public class MigrationManager : IMigrationManager
|
||||
{
|
||||
private readonly IHostApplicationLifetime _appLifetime;
|
||||
private readonly IList<Task> _migrationTasks = new List<Task>();
|
||||
|
||||
private static readonly IReadOnlySet<TaskStatus> CompletedStatuses = new HashSet<TaskStatus>
|
||||
{
|
||||
TaskStatus.Faulted,
|
||||
TaskStatus.Canceled,
|
||||
TaskStatus.RanToCompletion
|
||||
};
|
||||
|
||||
public MigrationManager(IHostApplicationLifetime appLifetime)
|
||||
{
|
||||
_appLifetime = appLifetime;
|
||||
}
|
||||
|
||||
public void Start(Task migrationTask)
|
||||
{
|
||||
_migrationTasks.Add(migrationTask);
|
||||
|
||||
migrationTask.ContinueWith(_ =>
|
||||
{
|
||||
lock (_migrationTasks)
|
||||
{
|
||||
if (_migrationTasks.All(t => CompletedStatuses.Contains(t.Status)))
|
||||
{
|
||||
_appLifetime.StopApplication();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user