Skip to content

DisposableAsyncSlot.SwapAsync(IAsyncDisposable?, IAsyncDisposable?) method

Defined in

Type: DisposableAsyncSlot Namespace: ReactiveUI.Extensions.Async.Disposables Assembly: ReactiveUI.Extensions.dll

Applies to

net10.0, net10.0-browserwasm1.0, net10.0-desktop1.0, net9.0, net9.0-browserwasm1.0, net9.0-desktop1.0, net8.0, net8.0-ios17.5, net8.0-maccatalyst17.5, net8.0-macos14.2, net8.0-macos14.5, net8.0-tvos17.2, netstandard2.1, net462, net481

Attributes: [DebuggerStepThrough] [ExcludeFromCodeCoverage]

public static ValueTask SwapAsync(ref IAsyncDisposable? slot, IAsyncDisposable? value)

View source

Summary: Swaps the slot's current contents with value and asynchronously disposes the previous occupant. Equivalent to SetDisposableAsync, but operates on a caller-owned field so no wrapper instance is allocated.

Parameters

NameTypeDescription
ref slotIAsyncDisposable?Reference to the caller-owned IAsyncDisposable field.
valueIAsyncDisposable?The new value to store, or null to clear the slot.

Returns: ValueTask -- A ValueTask that completes once the previous occupant (if any) has been disposed.

Remarks

The compare-exchange retry (the loop back-edge) is only taken when a concurrent writer wins the race, so it is unreachable by single-threaded tests; excluded from coverage accordingly.