Compze.Utilities.SystemCE.ThreadingCE 0.2.0-alpha.1

This is a prerelease version of Compze.Utilities.SystemCE.ThreadingCE.
dotnet add package Compze.Utilities.SystemCE.ThreadingCE --version 0.2.0-alpha.1
                    
NuGet\Install-Package Compze.Utilities.SystemCE.ThreadingCE -Version 0.2.0-alpha.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Compze.Utilities.SystemCE.ThreadingCE" Version="0.2.0-alpha.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Compze.Utilities.SystemCE.ThreadingCE" Version="0.2.0-alpha.1" />
                    
Directory.Packages.props
<PackageReference Include="Compze.Utilities.SystemCE.ThreadingCE" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Compze.Utilities.SystemCE.ThreadingCE --version 0.2.0-alpha.1
                    
#r "nuget: Compze.Utilities.SystemCE.ThreadingCE, 0.2.0-alpha.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Compze.Utilities.SystemCE.ThreadingCE@0.2.0-alpha.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Compze.Utilities.SystemCE.ThreadingCE&version=0.2.0-alpha.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Compze.Utilities.SystemCE.ThreadingCE&version=0.2.0-alpha.1&prerelease
                    
Install as a Cake Tool

Compze.Utilities.SystemCE.ThreadingCE

Threading and synchronization utilities for Compze.

What is Compze?

Compze is a .NET framework for building expressive domains through Teventive programming and Typermedia APIs. Learn more

What's in this package?

Thread synchronization primitives, usage guards, async locks, Task utilities, and a rich testing toolkit for deterministic multi-threaded tests.

Monitor (IMonitorCE)

A feature-rich monitor with read/update locks, conditional awaiting, and deadlock detection:

var monitor = MonitorCE.WithTimeout(1.Seconds());

// Read lock
var value = monitor.Read(() => _sharedState);

// Update lock
monitor.Update(() => _sharedState = newValue);

// Conditional await — blocks until condition is true
monitor.Await(() => _queue.Count > 0);

Usage guards

Catch threading violations at runtime:

  • SingleThreadUseGuard — ensures component is accessed from one thread only
  • SingleTransactionUsageGuard — ensures component stays within one transaction
  • CombinationUsageGuard — composes multiple guards

Async lock

var asyncLock = new AsyncLockCE();
await using(await asyncLock.LockedAsync())
{
    // Critical section
}

Task utilities

  • TaskCE.Run() — guaranteed execution on a different thread
  • TaskCE.RunOnDedicatedThread() — runs on a new dedicated thread
  • caf() — abbreviated ConfigureAwait(false) for Task, Task<T>, ValueTask
  • WaitUnwrappingException(), ResultUnwrappingException() — clean exception propagation

Thread-safe shared state

  • IThreadShared<T> — read/update/await operations on shared data
  • MachineWideSharedObject<T> — cross-process shared state via files + named mutex

Testing toolkit

Deterministic multi-threaded testing primitives:

  • ThreadGate — controllable gate to synchronize threads at specific points
  • GatedCodeSection — entrance + exit gates for controlling thread flow through code sections
  • TestingTaskRunner — run background tasks with automatic exception propagation
var gate = ThreadGate.WithTimeout(1.Seconds());
gate.Close();

// Start background work that will block at the gate
var task = Task.Run(() => { gate.AwaitPassThrough(); DoWork(); });

gate.AwaitQueueLengthEqualTo(1); // Wait for thread to arrive
gate.Open();                      // Let it through

Installation

dotnet add package Compze.Utilities.SystemCE.ThreadingCE
Package Description
Compze.Utilities.SystemCE System type extensions
Compze.Contracts Design-by-contract assertions
Compze.Functional Functional programming primitives
Compze.Utilities Core utilities

License

Apache-2.0

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (14)

Showing the top 5 NuGet packages that depend on Compze.Utilities.SystemCE.ThreadingCE:

Package Downloads
Compze.Utilities.Testing.Must

Fluent assertion library for Compze testing.

Compze.Utilities.Testing.XUnit

xUnit testing utilities and attributes for the Compze framework.

Compze.Utilities.DependencyInjection

Package Description

Compze.Utilities.Logging

Package Description

Compze.Utilities.DependencyInjection.SimpleInjector

SimpleInjector dependency injection integration for the Compze framework.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0-alpha.1 82 2/28/2026
0.1.0-alpha.3 272 2/13/2026