Beispiel #1
0
 public SignallingBackgroundWorkScheduler(
     IBackgroundWorkScheduler innerScheduler,
     Action onScheduled)
 {
     _innerScheduler = innerScheduler;
     _onScheduled    = onScheduled;
 }
        public static async Task <bool> ScheduleAndWait(
            this IBackgroundWorkScheduler backgroundWorkScheduler,
            WorkItem workItem,
            TimeSpan timeout,
            object state = null)
        {
            if (workItem == null)
            {
                throw new ArgumentNullException(nameof(workItem));
            }

            var tcs = new TaskCompletionSource <bool>();

            await backgroundWorkScheduler.Schedule(
                new WorkItem(async(state, serviceProvider, cancellationToken) =>
            {
                try
                {
                    await workItem(state, serviceProvider, cancellationToken);
                    tcs.SetResult(true);
                }
                catch (Exception ex)
                {
                    tcs.SetException(ex);
                }
            }),
                state);

            if (await Task.WhenAny(Task.Delay(timeout), tcs.Task) != tcs.Task)
            {
                return(false);
            }

            return(await tcs.Task);
        }
Beispiel #3
0
 public FileUploadProcessor(
     ISqlQueryDispatcherFactory sqlQueryDispatcherFactory,
     BlobServiceClient blobServiceClient,
     IClock clock,
     IRegionCache regionCache,
     IBackgroundWorkScheduler backgroundWorkScheduler)
 {
     _sqlQueryDispatcherFactory = sqlQueryDispatcherFactory;
     _blobContainerClient       = blobServiceClient.GetBlobContainerClient(Constants.ContainerName);
     _clock                   = clock;
     _regionCache             = regionCache;
     _backgroundWorkScheduler = backgroundWorkScheduler;
 }
Beispiel #4
0
 public BulkUploadController(
     IBulkUploadService bulkUploadService,
     IBlobStorageService blobService,
     ICourseService courseService,
     ICosmosDbQueryDispatcher cosmosDbQueryDispatcher,
     IBackgroundWorkScheduler backgroundWorkScheduler,
     ILogger <BulkUploadController> logger,
     IProviderContextProvider providerContextProvider)
 {
     _bulkUploadService       = bulkUploadService ?? throw new ArgumentNullException(nameof(bulkUploadService));
     _blobService             = blobService ?? throw new ArgumentNullException(nameof(blobService));
     _courseService           = courseService ?? throw new ArgumentNullException(nameof(courseService));
     _cosmosDbQueryDispatcher = cosmosDbQueryDispatcher ?? throw new ArgumentNullException(nameof(cosmosDbQueryDispatcher));
     _backgroundWorkScheduler = backgroundWorkScheduler ?? throw new ArgumentNullException(nameof(backgroundWorkScheduler));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
     _providerContextProvider = providerContextProvider;
 }
Beispiel #5
0
 public HomeController(IBackgroundWorkScheduler backgroundWorker)
 {
     _backgroundWorker = backgroundWorker;
 }