public async Task <IRecognitionResults> EnqueueAsync(IRecognitionJob recognitionJob) { var queueItem = new QueuedRecognitionJob(recognitionJob, _cancellationSource.Token); if (!await _jobQueue.SendAsync(queueItem)) { throw new ApplicationException("Unable to enqueue job."); } return(await queueItem.GetAwaiter()); }
public QueuedRecognitionJob(IRecognitionJob recognitionJob, CancellationToken token) { _recognitionJob = recognitionJob ?? throw new ArgumentNullException(nameof(recognitionJob)); _completionSource = new TaskCompletionSource <IRecognitionResults>(); _token = token; }