Skip to content

Instantly share code, notes, and snippets.

@ravindUwU
Last active October 18, 2025 04:30
Show Gist options
  • Select an option

  • Save ravindUwU/8ce19a39103658c4afd5914da75b9a28 to your computer and use it in GitHub Desktop.

Select an option

Save ravindUwU/8ce19a39103658c4afd5914da75b9a28 to your computer and use it in GitHub Desktop.
class SomeOptionsHostedService(IOptionsMonitor<SomeOptions> monitor): IHostedService, IDisposable
{
private CancellationTokenSource? stopping;
private IDisposable? listener;
public async Task StartAsync(CancellationToken cancellationToken)
{
stopping = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
listener = monitor.OnChange(async (value) => await UseAsync(value, stopping.Token));
await UseAsync(monitor.CurrentValue, cancellationToken);
}
public Task StopAsync(CancellationToken cancellationToken)
{
stopping?.Cancel();
return Task.CompletedTask;
}
public void Dispose()
{
stopping?.Dispose();
listener?.Dispose();
}
private async Task UseAsync(SomeOptions options, CancellationToken cancellationToken = default)
{
await Task.CompletedTask;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment