title: Correct use of CancellationToken
body: <p>This is my situation:</p>
  
  <pre><code>    private CancellationTokenSource cancellationTokenSource;
      private CancellationToken cancellationToken;
  
      public IoTHub()
      {
          cancellationTokenSource = new CancellationTokenSource();
          cancellationToken = cancellationTokenSource.Token;
  
          receive();
      }
  
      private void receive()
      {
          eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, iotHubD2cEndpoint);
          var d2cPartitions = eventHubClient.GetRuntimeInformation().PartitionIds;
  
          foreach (string partition in d2cPartitions)
          {
              ReceiveMessagesFromDeviceAsync(partition, cancellationToken);
          }
      }
  
      private async Task ReceiveMessagesFromDeviceAsync(CancellationToken ct)
      {
          var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow);
  
          while (true)
          {
              if(ct.IsCancellationRequested)
              {
                  break;
              }
  
              EventData eventData = await eventHubReceiver.ReceiveAsync();
              if (eventData == null) continue;
  
              string data = Encoding.UTF8.GetString(eventData.GetBytes());
  
              // Javascript function with Websocket
              Clients.All.setMessage(data);
          }
      }
  
      public void cancelToken()
      {
        cancellationTokenSource.Cancel();
      }
  </code></pre>
  
  <p>The Task will not be cancelled, when calling the cancelToken method. How come?</p>
  
  <p>I have read the <a href="https://msdn.microsoft.com/en-us/library/dd997396(v=vs.110).aspx" rel="noreferrer">Microsoft guide</a>, an other Stackoverflow questions about Task cancellation. </p>
  
  <p>But still have difficulty using them correctly.</p>