public static void Start(int tenantId, StorageSettings newStorageSettings) { if (TokenSource.Token.IsCancellationRequested) { return; } MigrateOperation migrateOperation; lock (Locker) { migrateOperation = Cache.Get <MigrateOperation>(GetCacheKey(tenantId)); if (migrateOperation != null) { return; } migrateOperation = new MigrateOperation(tenantId, newStorageSettings); Cache.Insert(GetCacheKey(tenantId), migrateOperation, DateTime.MaxValue); } var task = new Task(migrateOperation.RunJob, TokenSource.Token, TaskCreationOptions.LongRunning); task.ConfigureAwait(false) .GetAwaiter() .OnCompleted(() => { lock (Locker) { Cache.Remove(GetCacheKey(tenantId)); } }); task.Start(Scheduler); }
public void Start(int tenantId, StorageSettings newStorageSettings, StorageFactoryConfig storageFactoryConfig) { lock (Locker) { var id = GetCacheKey(tenantId); var migrateOperation = Queue.GetTask <MigrateOperation>(id); if (migrateOperation != null) { return; } migrateOperation = new MigrateOperation(ServiceProvider, CacheMigrationNotify, id, tenantId, newStorageSettings, storageFactoryConfig, TempStream); Queue.QueueTask(migrateOperation); } }