Example #1
0
        private async Task PollQueueTask(string queue, TaskCompletionSource <bool> whenReady, CancellationToken ct)
        {
            while (!ct.IsCancellationRequested)
            {
                whenReady.CompleteIfNeed(true);
                await _queryWindow.NextEventTask;

                while (!ct.IsCancellationRequested)
                {
                    var result = await LongPollForItem(queue);

                    if (result != null)
                    {
                        await _queryWindow.TrySaveResult(queue, result);

                        break;
                    }
                    else
                    {
                        if (!_queryWindow.IsOpened)
                        {
                            break;
                        }
                    }
                }
            }

            _queryWindow.SetCanceled(queue);
        }