Table of Contents

Namespace Icicle

Classes

BaseHandle

A suspended delegate that a TaskScope can materialize

InvalidRunTokenException

Thrown when a RunToken passed to a handle did not match the handle's RunToken; ie. the TaskScope that produced the RunToken was not the one that the handle was produced from

ResultHandle

Represents a handle to an action after a Run(RunOptions?, CancellationToken) from a delegate added via Add(Func<CancellationToken, ValueTask>)

ResultHandle<T>

Represents a handle to a result produced after a Run(RunOptions?, CancellationToken) from a delegate added via Add<T>(Func<CancellationToken, ValueTask<T>>)

RunToken

Provides proof that Run(RunOptions?, CancellationToken) was executed, which can then be exchanged for the result of that execute with ResultHandle<T> or ResultHandle

TaskScope

Core abstraction for structured concurrency. TaskScope supports cases where a Task splits into several child Task, and where the child Task must complete before the main Task continues. A TaskScope can be used to ensure that the lifetime of a concurrent operation is confined by a using block, just like that of a sequential operation in structured programming.

TaskScope.WhenAll

An implementation of a TaskScope that runs all child tasks in parallel with optional windowing based on a provided windowSize

TaskScope.WhenAny

An implementation of a TaskScope that runs all child tasks in parallel stopping when the first child task completes

TaskScopeCompletedException

Thrown when trying to modify a TaskScope after it has had Run(RunOptions?, CancellationToken) called on it

TaskScopeNotRunException

Thrown when a Dispose() is called on a TaskScope and a Run(RunOptions?, CancellationToken) has not been called on it

Structs

TaskScope.RunOptions

Options for configuring Run(RunOptions?, CancellationToken)

Enums

ResultHandleState

States a ResultHandle<T> and ResultHandle can be in