BlyZe.BackgroundTimer
3.0.0
Additional Details
Stop method caused a deadlock in some cases. Fixed with Version 4.0.0.0 and above
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package BlyZe.BackgroundTimer --version 3.0.0
NuGet\Install-Package BlyZe.BackgroundTimer -Version 3.0.0
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="BlyZe.BackgroundTimer" Version="3.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BlyZe.BackgroundTimer --version 3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: BlyZe.BackgroundTimer, 3.0.0"
#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.
// Install BlyZe.BackgroundTimer as a Cake Addin #addin nuget:?package=BlyZe.BackgroundTimer&version=3.0.0 // Install BlyZe.BackgroundTimer as a Cake Tool #tool nuget:?package=BlyZe.BackgroundTimer&version=3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
How to use
Initialize a new BackgroundTimer instance.
var timer = new BackgroundTimer();
You can create a callback method
static void BackgroundTimerCallback(int tick) => Console.WriteLine("Current tick: " + tick); //tick is the current tick of the running timer
Then you can start the timer with that callback method so it get executed on every tick
timer.Start(TimeSpan.FromMilliseconds(69), BackgroundTimerCallback); //Starts a timer that executes the callback method every 69 milliseconds
To stop the timer just call the Stop(); or StopAsync(); method
timer.Stop(); //Stops the timer
await timer.StopAsync(); //Stops the timer asynchronously
await timer.StopAsync(TimeSpan.FromSeconds(5)); //Stops the timer asynchronously after 5 seconds
You can get information about a timer instance
int currentTick = timer.CurrentTick; //Get the current tick the timer is on
BackgroundTimerState currentState = timer.State; //Get the current timer state
TimeSpan timerPeriod = timer.Period; //Get the period the timer is running on
Important Note
You can only run one timer with one instance. If you want to run multiple timers simultaneously you have to create multiple timer instances.
Wrong Example
var timer = new BackgroundTimer();
timer.Start(TimeSpan.FromMilliseconds(69), BackgroundTimerCallback, TimeSpan.FromSeconds(1.5));
timer.Start(TimeSpan.FromMilliseconds(420), BackgroundTimerCallback); //That timer will not run
Right Example
var timer = new BackgroundTimer();
timer.Start(TimeSpan.FromMilliseconds(69), BackgroundTimerCallback, TimeSpan.FromSeconds(1.5)); //Starts the timer
await Task.Delay(2500); //Imitates timer running
//NOTE: You have to use the StopAsync(); method or a while loop to wait for the timer to stop otherwise the timer.Start(); executes before the timer actually stopped!
//First variant - async
if (timer.State is not BackgroundTimerState.NotRunning) await timer.StopAsync();
//Second variant - loop
if (timer.State is not BackgroundTimerState.NotRunning) timer.Stop();
while (timer.State is not BackgroundTimerState.NotRunning) { }
timer.Start(TimeSpan.FromMilliseconds(420), BackgroundTimerCallback); //Start new timer safely
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on BlyZe.BackgroundTimer:
Package | Downloads |
---|---|
ConsoleNexusEngine
A powerful and easy to use engine to create console games |
GitHub repositories
This package is not used by any popular GitHub repositories.
Complete rewrite of the background timer