/// <summary> /// Run lidar task /// </summary> /// <param name="cancellationToken"></param> private bool RunLidar(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { // Try to get scan Scan scan = lidar.GetScan(cancellationToken); if (scan == null) { // It was either cancellation or error return(cancellationToken.IsCancellationRequested); } // Display it BeginInvoke(new UpdateScanDelegate(UpdateScan), new object[] { scan }); } // Normal exit return(true); }