private async Task WaitForChange() { // Always add recursive. It is ignored for values and required for directories when waiting for changes and ETags differ between // recursive and non-recursive requests for directories. var response = await client.RequestMetadataAsync(path + "?recursive=true", cancellationTokenSource.Token).ConfigureAwait(false); var lastETag = GetETag(response); ready.Set(); var timeout = new TimeSpan(client.HttpClient.Timeout.Ticks / 2); while (!cancellationTokenSource.Token.IsCancellationRequested) { try { var result = await client.WaitForChangeAsync(path, lastETag, timeout, cancellationTokenSource.Token).ConfigureAwait(false); if (lastETag != result.ETag) { changeAction(this, result.Content); lastETag = result.ETag; } } catch (OperationCanceledException) { } } }
private async Task WaitForChange() { var response = await client.RequestMetadataAsync(path, cancellationTokenSource.Token).ConfigureAwait(false); var lastETag = GetETag(response); ready.Set(); var timeout = new TimeSpan(client.HttpClient.Timeout.Ticks / 2); while (!cancellationTokenSource.Token.IsCancellationRequested) { try { var result = await client.WaitForChangeAsync(path, lastETag, timeout, cancellationTokenSource.Token).ConfigureAwait(false); if (lastETag != result.ETag) { changeAction(this, result.Content); lastETag = result.ETag; } } catch (OperationCanceledException) { } } }