コード例 #1
0
 public ConvTask(DbCtx dbctx, Track track, MCloudConfig.Converter conv, ILogger <ConvertService> logger)
 {
     Dbctx       = dbctx;
     Track       = track;
     Conv        = conv;
     this.logger = logger;
 }
コード例 #2
0
        public async Task <ConvResult> GetConverted(DbCtx dbctx, Track track, MCloudConfig.Converter conv)
        {
            var taskKey = track.id + "-" + conv.Name;
            var task    = tasks.GetOrAdd(taskKey, (key) =>
            {
                return(new ConvTask(dbctx, track, conv, logger));
            });

            try
            {
                logger.LogInformation("'{taskKey}' start convert", taskKey);
                await task.Run(out var alreadyRunning);

                logger.LogInformation("'{taskKey}' end (already existed = {val})", taskKey, alreadyRunning);
                return(new ConvResult
                {
                    TrackFile = task.TrackFile,
                    AlreadyExisted = alreadyRunning
                });
            }
            finally
            {
                tasks.TryRemove(taskKey, out _);
            }
        }