Skip to content

Commit 965b77e

Browse files
committed
Reduce AsyncLazy value factory retention to improve GC-test stability
1 parent 34ec670 commit 965b77e

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

src/Microsoft.VisualStudio.Threading/AsyncLazy`1.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,16 @@ public Task<T> GetValueAsync(CancellationToken cancellationToken)
199199
this.valueFactory = null;
200200
Func<Task<T>> valueFactory = async delegate
201201
{
202+
Func<Task<T>>? localValueFactory = originalValueFactory;
203+
originalValueFactory = null;
202204
try
203205
{
204206
await resumableAwaiter;
205-
return await originalValueFactory().ConfigureAwaitRunInline();
207+
return await localValueFactory().ConfigureAwaitRunInline();
206208
}
207209
finally
208210
{
211+
localValueFactory = null;
209212
this.joinableTask = null;
210213
}
211214
};

0 commit comments

Comments
 (0)