Samhammer.TimedHostedService
6.0.0
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 Samhammer.TimedHostedService --version 6.0.0
NuGet\Install-Package Samhammer.TimedHostedService -Version 6.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="Samhammer.TimedHostedService" Version="6.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Samhammer.TimedHostedService --version 6.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Samhammer.TimedHostedService, 6.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 Samhammer.TimedHostedService as a Cake Addin #addin nuget:?package=Samhammer.TimedHostedService&version=6.0.0 // Install Samhammer.TimedHostedService as a Cake Tool #tool nuget:?package=Samhammer.TimedHostedService&version=6.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Samhammer.TimedHostedService
This package provides a hosted service that can run periodically.
The concept is from this documentation: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio
How to add this to your project:
- reference this nuget package: https://www.nuget.org/packages/Samhammer.TimedHostedService/
How to use:
Implement a class that inherits TimedHostedService.
public class MyHostedService : TimedHostedService<IMyService>
{
protected override TimeSpan StartDelay => TimeSpan.FromSeconds(3);
protected override TimeSpan ExecutionInterval => TimeSpan.FromDays(1);
public MyHostedService(ILogger<MyHostedService> logger, IServiceScopeFactory services)
: base(logger, services)
{
}
protected override Task RunScoped(IMyService myService)
{
myService.DoSomething();
return Task.CompletedTask;
}
}
Register the hosted service in startup:
public void ConfigureServices(IServiceCollection services)
{
services.AddHostedService<MyHostedService>()
}
Possible configurations:
- ExecutionInterval: How often the job ticks after starting (default: 60 seconds)
- StartDelay: Delay the first tick for a specific time after starting (default: 0)
- OnlySingleInstance: If the last tick is still no other tick is started even if the executionInterval is over (default: false)
Possible hook points:
- RunScoped: Execute your logic here (mandatory)
- OnStartup: Is called before the timer starts ticking (optional)
- OnRunSuccessful: Is executed after the current tick is over (optional)
- OnError: Can be used to handle errors that occur within a running tick
Note:
- Errors inside "ExecutionInterval" are catched and can be handled with "OnError"
- "RunScoped" is running in it's ioc scope. The other hook points are outside of this scope.
Contribute
How to publish a nuget package
- Create a tag and let the github action do the publishing for you
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 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. 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.
-
.NETStandard 2.0
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.