TCSystem.Thread 5.0.0-ci.202605071830

This is a prerelease version of TCSystem.Thread.
dotnet add package TCSystem.Thread --version 5.0.0-ci.202605071830
                    
NuGet\Install-Package TCSystem.Thread -Version 5.0.0-ci.202605071830
                    
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="TCSystem.Thread" Version="5.0.0-ci.202605071830" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TCSystem.Thread" Version="5.0.0-ci.202605071830" />
                    
Directory.Packages.props
<PackageReference Include="TCSystem.Thread" />
                    
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 TCSystem.Thread --version 5.0.0-ci.202605071830
                    
#r "nuget: TCSystem.Thread, 5.0.0-ci.202605071830"
                    
#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 TCSystem.Thread@5.0.0-ci.202605071830
                    
#: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=TCSystem.Thread&version=5.0.0-ci.202605071830&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=TCSystem.Thread&version=5.0.0-ci.202605071830&prerelease
                    
Install as a Cake Tool

TCSystem — C# Utility Libraries

Quality Gate Status

A collection of reusable .NET libraries for logging, image metadata management, GPS data processing, threading utilities, and more. All libraries are published as NuGet packages and target netstandard2.1, net8.0, and net10.0.

Libraries

TCSystem.Logging

Wraps Serilog behind an abstract Logger class where debug logging is not compiled into your code when building in Release mode (using [Conditional("DEBUG")]).

The recommended pattern is to add a Log.cs file in each folder/namespace so that each log output can be filtered by its namespace.

Init Logging
Factory.InitLogging(Factory.LoggingOptions.Console | Factory.LoggingOptions.File,
                    "Output.txt", 1, 10 * 1024);
Log.cs example
namespace Hello.World
{
    internal static class Log
    {
        public static Logger Instance { get; } = Factory.GetLogger(typeof(Log));
    }
}
Usage in your code
Log.Instance.Info("Hello World");

TCSystem.MetaData

Classes for handling and storing image metadata (date/time, GPS location, face/person tags). Supports JSON serialization via Newtonsoft.Json.

TCSystem.MetaDataDB

SQLite database abstraction (via Microsoft.Data.Sqlite) for storing, querying, and filtering image metadata. Provides thread-safe access through an instance-pooling pattern.

TCSystem.Gps

Reader for GPS data from Google Takeout location history files (records.json). Uses System.Text.Json with async streaming.

TCSystem.Thread

Thread helper classes including a worker thread that queues commands and executes them in order. Supports async Task-based APIs and cancellation tokens.

TCSystem.Util

Lightweight extension methods for containers, enumerables, and common patterns such as null-safe equality comparisons.

Tools

Tool Description
TCSystem.Tools.DBConverter Converts an existing metadata database file to a new schema
TCSystem.Tools.TakeoutReader Reads a Google Takeout records file and imports GPS data

Both tools are .NET 8.0 console applications and are not published as NuGet packages.

Project Dependencies

TCSystem.Util
  └─► TCSystem.MetaData ─► Newtonsoft.Json
        ├─► TCSystem.Gps ─► System.Text.Json
        └─► TCSystem.MetaDataDB ─► Microsoft.Data.Sqlite
              ├─► TCSystem.Logging ─► Serilog
              └─► TCSystem.Thread
                    └─► TCSystem.Logging

Getting Started

Prerequisites

Build

dotnet restore
dotnet build -c Release

Test

dotnet test

Tests use NUnit with code coverage via Coverlet.

NuGet Packages

All library projects produce NuGet packages on build. Packages are published to nuget.org via the nuget_deploy GitHub Actions workflow.

CI / CD

Workflow Trigger Purpose
analyze.yml Push to develop/main SonarCloud analysis with code coverage
dotnet.yml Manual Release validation build
nuget_deploy.yml Manual Build, test, and publish NuGet packages

Dependency updates are managed by Dependabot (weekly, targeting the develop branch).

License

MIT — Copyright © 2003–2026 Thomas Gößler

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on TCSystem.Thread:

Package Downloads
TCSystem.MetaDataDB

SQLite Database abstraction for storing, filtering Image Meta Data

GitHub repositories

This package is not used by any popular GitHub repositories.