示例#1
0
        public async Task TestRetryStrategy()
        {
            int nCalls                 = 0;
            int succeedAfter           = 3;
            Func <Task <int> > toRetry = async() =>
            {
                nCalls++;
                if (succeedAfter-- > 0)
                {
                    throw new OutOfMemoryException();
                }
                return(await Task.Run(() => nCalls));
            };

            var result = await RetryStrategy.RetryAsync(toRetry, 5, 500);

            Assert.AreEqual(4, result);

            succeedAfter = 1;

            await Assert.ThrowsExceptionAsync <OutOfMemoryException>(() => RetryStrategy.RetryAsync(toRetry, 5, 500, (e) =>
            {
                if (e is OutOfMemoryException)
                {
                    throw e;
                }
            }));
        }