private async Task ProcessRequest(ScannerRequest request) { if (request.TrySetOffline()) { Logger.Info("ScannerParameter: {0} is OFFLINE. Scheduled on: {1}", request.Parameter.Id, _timeProvider.Now + request.UntilExpiration); request.Signal(); NotifyScannerChanges(request, new Scanner(), false); return; } // fetch the scanner from the market Logger.Info("Requesting scanner for ScannerParameter: {0}...", request.Parameter.Id); var scanner = await _marketDataProvider.GetScannerAsync(request.Parameter); Logger.Info("Received scanner for ScannerParameter: {0}", request.Parameter.Id); request.Signal(); // Notify changes NotifyScannerChanges(request, scanner, true); // save the to database _scannerService.PersistScanner(scanner, request.Parameter.Id); }