public async Task Async() { var calledCount = 0; var syncLazy = ValueTaskEx.Lazy(async() => { calledCount++; await Task.Delay(TimeSpan.FromSeconds(1)); }); calledCount.Should().Be(0); await ValueTaskEx.WhenAll(syncLazy, syncLazy, syncLazy); calledCount.Should().Be(1); }
public async Task Async() { var calledCount = 0; var syncLazy = ValueTaskEx.Lazy(async() => { calledCount++; await Task.Delay(TimeSpan.FromSeconds(1)); return(new object()); }); calledCount.Should().Be(0); var(v1, v2, v3) = await ValueTaskEx.WhenAll(syncLazy, syncLazy, syncLazy); calledCount.Should().Be(1); object.ReferenceEquals(v1, v2).Should().BeTrue(); object.ReferenceEquals(v2, v3).Should().BeTrue(); }
public async Task Sync() { var calledCount = 0; var syncLazy = ValueTaskEx.Lazy(async() => { calledCount++; }); calledCount.Should().Be(0); await syncLazy; calledCount.Should().Be(1); await syncLazy; calledCount.Should().Be(1); }
public async Task Sync() { var calledCount = 0; var syncLazy = ValueTaskEx.Lazy(async() => { calledCount++; return(100); }); calledCount.Should().Be(0); var value = await syncLazy; value.Should().Be(100); calledCount.Should().Be(1); var value2 = await syncLazy; value.Should().Be(100); calledCount.Should().Be(1); }