diff --git a/src/Simple.OData.Client.Core/Session.cs b/src/Simple.OData.Client.Core/Session.cs index 189fde75..a76e4a65 100644 --- a/src/Simple.OData.Client.Core/Session.cs +++ b/src/Simple.OData.Client.Core/Session.cs @@ -76,6 +76,10 @@ public void Dispose() private readonly SemaphoreSlim _initializeSemaphore = new(1); public async Task Initialize(CancellationToken cancellationToken) { + //Avoid unnecessary locks + if (MetadataCache != null && _adapter != null) + return; + // Just allow one schema request at a time, unlikely to be much contention but avoids multiple requests for same endpoint. await _initializeSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false);