예제 #1
0
        public async Task WaitFutureTimeoutTest()
        {
            var task1 = new Func <Task <int> >(async() =>
            {
                await Task.Delay(500);
                return(2);
            });
            var task2 = new Func <Task>(async() =>
            {
                await Task.Delay(500);
            });

            var r = await AsyncUtils.WaitFutureTimeout(task1(), TimeSpan.FromMilliseconds(2000));

            Assert.Equal(2, r);

            await AsyncUtils.WaitFutureTimeout(task2(), TimeSpan.FromMilliseconds(2000));

            await Assert.ThrowsAsync <TimeoutException>(async() => await AsyncUtils.WaitFutureTimeout(task1(), TimeSpan.FromMilliseconds(100)));

            await Assert.ThrowsAsync <TimeoutException>(async() => await AsyncUtils.WaitFutureTimeout(task2(), TimeSpan.FromMilliseconds(100)));
        }