-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Update documentation for AddHostedService. #123658
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR updates the XML documentation for the AddHostedService extension methods to clarify that these methods only register the service as IHostedService in the DI container, not as the concrete type itself. This addresses confusion reported in issue #53831 where developers expected the concrete type to also be registered.
Changes:
- Added
<remarks>sections to both overloads ofAddHostedServiceexplaining the registration behavior - Included code examples demonstrating the workaround pattern for registering both the concrete type and the hosted service
...es/Microsoft.Extensions.Hosting.Abstractions/src/ServiceCollectionHostedServiceExtensions.cs
Outdated
Show resolved
Hide resolved
...es/Microsoft.Extensions.Hosting.Abstractions/src/ServiceCollectionHostedServiceExtensions.cs
Outdated
Show resolved
Hide resolved
...es/Microsoft.Extensions.Hosting.Abstractions/src/ServiceCollectionHostedServiceExtensions.cs
Outdated
Show resolved
Hide resolved
...es/Microsoft.Extensions.Hosting.Abstractions/src/ServiceCollectionHostedServiceExtensions.cs
Outdated
Show resolved
Hide resolved
| /// services.AddSingleton<SomeService>(); | ||
| /// services.AddHostedService(sp => sp.GetRequiredService<SomeService>()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This suggested solution will cause the service to be disposed twice when the service collection is disposed, correct? (assuming it implements IDisposable)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's correct.
But I don't see problem with that. The IDisposable docs clearly states:
If an object's Dispose method is called more than once, the object must ignore all calls after the first one. The object must not throw an exception if its Dispose method is called multiple times.
Fixes #53831.