Example #1
0
 private IAsyncEnumerable <Message> StreamMessages(CancellationToken stopToken) =>
 new AsyncEnumerable <Message>(async yield =>
 {
     while (!stopToken.IsCancellationRequested)
     {
         try
         {
             var message = await _messageHub.GetMessage(stopToken)
                           .ContinueWith(task => task.IsCanceled ? null : task.Result);
             if (message == null)
             {
                 break;
             }
             await yield.ReturnAsync(message);
         }
         catch (OperationCanceledException)
         {
             break;
         }
     }
 });