Header menu logo TDesu.FSharp

Disposable Module

Disposable utilities — create, combine, defer, null-safe dispose.

Types

Type Description

DeferStack

Deferred cleanup stack (like Go's defer). Add cleanups, all run on Dispose in LIFO order. Not thread-safe: do not call Add concurrently with Dispose.

Functions and values

Function or value Description

Disposable.combine disposables

Full Usage: Disposable.combine disposables

Parameters:
    disposables : IDisposable list - The list of disposables to combine.

Returns: IDisposable

Combines multiple disposables into one. All are disposed in reverse order.

disposables : IDisposable list

The list of disposables to combine.

Returns: IDisposable
Example

 use all = Disposable.combine [ stream; connection; timer ]
val all: obj

Disposable.create f

Full Usage: Disposable.create f

Parameters:
    f : unit -> unit - The cleanup function to invoke on disposal.

Returns: IDisposable
Modifiers: inline

Creates an IDisposable from a cleanup function.

f : unit -> unit

The cleanup function to invoke on disposal.

Returns: IDisposable
Example

 use d = Disposable.create (fun () -> connection.Close())
val d: obj

Disposable.createOnce f

Full Usage: Disposable.createOnce f

Parameters:
    f : unit -> unit - The cleanup function to run at most once.

Returns: IDisposable

Creates a disposable that runs the cleanup function at most once (thread-safe).

Thread-safe: uses Exchange internally.

f : unit -> unit

The cleanup function to run at most once.

Returns: IDisposable

Disposable.deferStack ()

Full Usage: Disposable.deferStack ()

Parameters:
    () : unit

Returns: DeferStack

Creates a new deferred cleanup stack.

() : unit
Returns: DeferStack

Disposable.dispose d

Full Usage: Disposable.dispose d

Parameters:
Modifiers: inline

Safely disposes a value (null-safe, no-op if null). The disposable to dispose.

d : IDisposable

Disposable.disposeOption d

Full Usage: Disposable.disposeOption d

Parameters:
Modifiers: inline

Disposes the inner value if Some, no-op if None. The optional disposable to dispose.

d : IDisposable option

Disposable.disposeValueOption d

Full Usage: Disposable.disposeValueOption d

Parameters:
Modifiers: inline

Disposes the inner value if ValueSome, no-op if ValueNone. The value-option disposable to dispose.

d : IDisposable voption

Disposable.empty

Full Usage: Disposable.empty

Returns: IDisposable

An IDisposable that does nothing on Dispose.

Returns: IDisposable

Disposable.tempDir ()

Full Usage: Disposable.tempDir ()

Parameters:
    () : unit

Returns: string * IDisposable

Creates a temporary directory that is deleted on Dispose.

() : unit
Returns: string * IDisposable

Disposable.tempFile ()

Full Usage: Disposable.tempFile ()

Parameters:
    () : unit

Returns: string * IDisposable

Creates a temporary file path that is deleted on Dispose.

() : unit
Returns: string * IDisposable

Disposable.using create f

Full Usage: Disposable.using create f

Parameters:
    create : unit -> 'T
    f : 'T -> 'R

Returns: 'R
Modifiers: inline
Type parameters: 'T, 'R

Wraps a function: creates a resource, applies f, then disposes the resource. Factory function that produces the disposable resource. Function to apply to the created resource.

create : unit -> 'T
f : 'T -> 'R
Returns: 'R

Type something to start searching.