Skip to content

Commit 074800a

Browse files
committed
Add comment
1 parent 5fd7abd commit 074800a

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/ServiceProviderEngineScope.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ internal class ServiceProviderEngineScope : IServiceScope, IServiceProvider, IAs
1717
private List<object> _disposables;
1818

1919
private bool _disposed;
20-
private object _lock = new object();
20+
private readonly object _lock = new object();
2121

2222
public ServiceProviderEngineScope(ServiceProviderEngine engine)
2323
{
@@ -59,6 +59,9 @@ internal object CaptureDisposable(object service)
5959
}
6060
else
6161
{
62+
// this synchronous code path could cause a deadlock if we were to block on DisposeAsync
63+
// instead, a fire-and-forget call may cause race conditions while disposing borrowed resources.
64+
// since this is a rare error case, we just take the fire-and-forget approach here
6265
Task.Run(() => ((IAsyncDisposable)service).DisposeAsync().AsTask().GetAwaiter().GetResult());
6366
}
6467
ThrowHelper.ThrowObjectDisposedException();

0 commit comments

Comments
 (0)