Table of Contents

DisposableOptions Class

Definition

Namespace
Cuemon
Assemblies
Cuemon.Kernel.dll
Source
src/Cuemon.Kernel/DisposableOptions.cs

Configuration options for IDisposable.

public class DisposableOptions : IParameterObject
Inheritance
DisposableOptions
Implements
Derived

Examples

The following example demonstrates how to use to control whether a disposable resource is released when the owning wrapper is disposed.

using System;
using Cuemon;

namespace Contoso.IO;

public sealed class DisposableOptionsExample
{
    public static void Run()
    {
        var resource = new TrackedDisposable();
        var options = new DisposableOptions
        {
            LeaveOpen = true
        };

        DisposeWhenAllowed(resource, options);
        Console.WriteLine($"Disposed after leave-open: {resource.IsDisposed}");

        options.LeaveOpen = false;
        DisposeWhenAllowed(resource, options);
        Console.WriteLine($"Disposed after close: {resource.IsDisposed}");
    }

    private static void DisposeWhenAllowed(TrackedDisposable resource, DisposableOptions options)
    {
        if (!options.LeaveOpen)
        {
            resource.Dispose();
        }
    }

    private sealed class TrackedDisposable : IDisposable
    {
        public bool IsDisposed { get; private set; }

        public void Dispose()
        {
            IsDisposed = true;
        }
    }
}

Constructors

Name Description
DisposableOptions()

Initializes a new instance of the DisposableOptions class.

Properties

Name Description
LeaveOpen

Gets or sets a value indicating whether a disposable object should bypass the mechanism for releasing unmanaged resources. Default is false.

See Also