示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }