TCSystem.Thread
5.0.0-ci.202605071830
dotnet add package TCSystem.Thread --version 5.0.0-ci.202605071830
NuGet\Install-Package TCSystem.Thread -Version 5.0.0-ci.202605071830
<PackageReference Include="TCSystem.Thread" Version="5.0.0-ci.202605071830" />
<PackageVersion Include="TCSystem.Thread" Version="5.0.0-ci.202605071830" />
<PackageReference Include="TCSystem.Thread" />
paket add TCSystem.Thread --version 5.0.0-ci.202605071830
#r "nuget: TCSystem.Thread, 5.0.0-ci.202605071830"
#:package TCSystem.Thread@5.0.0-ci.202605071830
#addin nuget:?package=TCSystem.Thread&version=5.0.0-ci.202605071830&prerelease
#tool nuget:?package=TCSystem.Thread&version=5.0.0-ci.202605071830&prerelease
TCSystem — C# Utility Libraries
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
- .NET 8.0 SDK or later (net10.0 also supported)
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 | Versions 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. |
-
.NETStandard 2.1
- TCSystem.Logging (>= 5.0.0-ci.202605071830)
-
net10.0
- TCSystem.Logging (>= 5.0.0-ci.202605071830)
-
net8.0
- TCSystem.Logging (>= 5.0.0-ci.202605071830)
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.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 5.0.0-ci.202605071830 | 56 | 5/7/2026 | |
| 5.0.0-ci.202603172217 | 58 | 3/17/2026 | |
| 5.0.0-ci.202603171940 | 58 | 3/17/2026 | |
| 5.0.0-ci.202603102118 | 58 | 3/10/2026 | |
| 5.0.0-ci.202511152013 | 144 | 11/15/2025 | |
| 5.0.0-ci.202510081834 | 170 | 10/8/2025 | |
| 5.0.0-ci.202509232104 | 178 | 9/23/2025 | |
| 5.0.0-ci.202507031826 | 181 | 7/3/2025 | |
| 5.0.0-ci.202507031812 | 162 | 7/3/2025 | |
| 5.0.0-ci.202504192012 | 198 | 4/19/2025 | |
| 4.2.0 | 609 | 3/25/2025 | |
| 4.2.0-ci.202503242242 | 621 | 3/24/2025 | |
| 4.2.0-ci.202502102124 | 227 | 2/10/2025 | |
| 4.2.0-ci.202412091625 | 205 | 12/9/2024 | |
| 4.2.0-ci.202409182017 | 223 | 9/18/2024 | |
| 4.2.0-ci.202406032036 | 207 | 6/3/2024 | |
| 4.2.0-ci.202404231936 | 301 | 4/23/2024 | |
| 4.2.0-ci.202404082103 | 227 | 4/8/2024 | |
| 4.2.0-ci.202403301948 | 236 | 3/30/2024 | |
| 4.1.0 | 304 | 3/23/2024 |