A small library that implements an improved version of System.Threading.CancellationToken with support for removable registrations, to allow for garbage collection in the presence of long-lived tokens, plus some related utilities.
Motivation: cancellation tokens can be the source of memory "leaks", because an unbounded number of completed operations may have registered now-pointless callbacks on a token that can't be released or cancelled. The callbacks may reference all kinds of data, preventing effective garbage collection. Using a Lifetime allows fixing these issues because callback registrations can be given lifetimes of their own.
Additional utilities: LifetimeSource, LifetimeExchanger, DisposableLifetime, Max, Min, CreateDependentSource.
Install-Package TwistedOak.Util.Lifetime -Version 1.0.2
dotnet add package TwistedOak.Util.Lifetime --version 1.0.2
<PackageReference Include="TwistedOak.Util.Lifetime" Version="1.0.2" />
paket add TwistedOak.Util.Lifetime --version 1.0.2
#r "nuget: TwistedOak.Util.Lifetime, 1.0.2"
// Install TwistedOak.Util.Lifetime as a Cake Addin #addin nuget:?package=TwistedOak.Util.Lifetime&version=1.0.2 // Install TwistedOak.Util.Lifetime as a Cake Tool #tool nuget:?package=TwistedOak.Util.Lifetime&version=1.0.2
Added missing implicit conversion from CancellationToken to Lifetime. Minor documentation changes.
This package has no dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TwistedOak.Util.Lifetime:
An observable collection where items are removed when a lifetime paired with them ends. Affords projecting, filtering, and other functional-style usage by removing the need to equate removed items with previously added items.
This package is not used by any popular GitHub repositories.