Namespace SuperOffice.Threading
Classes
AsyncLazy<T>
Alternative to Lazy<T>. Simply wrapping our async tasks into a lazy value was not satisfactory, because 1) if it threw an exception inside the task, it would be permanently fixed to the lazy instance, and 2) it didn't allow us to pass a CancellationToken.
AsyncQueueBase<TItem>
Default implementation of IAsyncQueueBase<TItem> base functionality
AsyncQueueBase<TItem>.AsyncQueueItem
AsyncQueueBase<TItem>.AsyncQueueItemContext
AsyncQueueHandler<TAsynchronousHandlerProcessor, TAsynchronousArgument>
Base class replacing legacy system for quing things into an IAsyncQueue<TItem>.
AsyncQueueProcessor<TQueue, TItem>
Base class for hosted service processing items from an async queue
AsyncQueue<TItem>
Async queue that can be processed by an implementation of AsyncQueueProcessor<TItem>
AsynchronousHandlerProcessor<TAsynchronousArgument>
Base class for processing carried out by AsynchronousHandler<TAsynchronousHandlerProcessor, TAsynchronousArgument> and implementations of such.
BackgroundThreadCleanupPluginAttribute
DelayedItem<TItem>
Internal type used by IDelayedAsyncQueue<TItem> to represent the condition to when an item is to be processed.
ISafeBlockingTaskInheritorExtensions
ParallelConsumerQueue<T>
A simple, threadsafe and blocking queue. Contains methods to easily have multiple, identical consumer threads.
ParallelProcessor<TParallelizedProcessor>
Processer that can run multiple ParallelizedProcessor instances in parallel.
ParallelizedProcessor
Base class for processing that can be run in parallel and controlled by the IParallelizedProcessorControlPlane. This is typically an instance of ParallelProcessor<TParallelizedProcessor>.
SafeBlockingTasks
TaskHelper
ThreadwiseKeyCache<Item>
The purpose of this class is to contain a cache of items, with a separate cache per thread. The use case is that some class needs to maintain a unique list of items, uses a cache for this, and wants the list to be kept separate for each thread - even if the instance of the cache and/or client class is the same.
Interfaces
IAsyncQueueBase<TItem>
Interface that represents a queue, that can be proccessed by AsyncQueueProcessor<TItem>.
IAsyncQueueProcessItemContext<TItem>
IAsyncQueue<TItem>
IBackgroundThreadCleanupPlugin
IDelayedAsyncQueue<TItem>
Interface implemented by NetServer's AsyncQueue
IParallelProcessor<TParallelizedProcessor>
IParallelizedProcessorControlPlane
Interface implemented to provide control plane for ParallelizedProcessor.
ISafeBlockingTaskInheritor
Interface implemented to support transponding values from a parent task/context onto a child task/context.
Delegates
AsyncQueueProcessItemAsync<TItem>
Callback to process an item in the queue asynchronously