Skip to content

DCArea/DotNetToolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jul 29, 2024
69ee402 · Jul 29, 2024

History

17 Commits
Nov 24, 2023
Jul 29, 2024
Jul 29, 2024
Jul 29, 2024
Aug 7, 2023
Dec 26, 2023
Jul 29, 2024
Jul 20, 2024
Aug 7, 2023
Aug 7, 2023
Jul 20, 2024

Repository files navigation

DCA.Extensions.BackgroundTask

A simple, in-memory background task dispatcher and processor

How to use it

Install by nuget:

dotnet add package DCA.Extensions.BackgroundTask --prerelease
// Register background task components
services.AddBackgroundTask();
// Register dependency of background tasks
services.AddScoped<ServiceA>();

// dispatch a task to run in background
var dispatcher = serviceProvider.GetRequiredService<IBackgroundTaskDispatcher>();
await dispatcher.DispatchAsync<ServiceA>(async dep =>
{
	await dep.DoWork();
});  

Configuration

services.AddBackgroundTask(opt =>
{
	opt.Channels.Add(new BackgroundTaskChannelOptions{
		Key = "MyChannelKey",
		Capacity = 1024, // Max number of inflight tasks in the channel, A negetive number means unlimited
		WorkerCount = 1 // Number of workers for the channel, it should be 1 if all tasks in the channel are started immediately when dispatching
	});
});

MediatR extension

Install by nuget:

dotnet add package DCA.Extensions.BackgroundTask.MediatR --prerelease
// define background task and it's handler base on MediatR
public record MyTask(string Id) : IRequest
{
    public class MyTaskHandler : IRequestHandler<MyTask>
    {
        public Task Handle(MyTask request, CancellationToken cancellationToken)
        {
			// do work
            return Task.CompletedTask;
        }
    }
}
services.AddBackgroundTask();
// Register MediatR
services.AddMediatR(opt => opt.RegisterServicesFromAssemblyContaining<MyTask>());

// dispatch a task to run in background
var dispatcher = serviceProvider.GetRequiredService<IBackgroundTaskDispatcher>();
var task = new MyTask(Guid.NewGuid().ToString());
await dispatcher.DispatchAsync(task);

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages