public void Can_Cache_Html()
        {
            // 첫번째 다운로드는 모두 기다려서 캐시에 저장되게 합니다.
            //
            using (new OperationTimer("First Load", false)) {
                var tasks = _urlStrings.Select(addr => _htmlCache.GetValue(new Uri(addr))).ToArray();

                Task.WaitAll(tasks);

                tasks.RunEach(task => Assert.IsNotEmpty(task.Result));
            }

            // 캐시에 저장되어 있으므로 무지 빠를 것입니다.
            //
            using (new OperationTimer("Second Load", false)) {
                var tasks = _urlStrings.Select(addr => _htmlCache.GetValue(new Uri(addr))).ToArray();

                Task.WaitAll(tasks);

                tasks.RunEach(task => Assert.IsNotEmpty(task.Result));
            }
        }
示例#2
0
        public void Test_CoordinationDataStructures_AsyncCoordination_AsyncCache_Cache()
        {
            //异步cached
            var asyncCache = new AsyncCache <int, int>(e => Task.Factory.StartNew <int>(() => 10));
            var task       = asyncCache.GetValue(1);

            Assert.AreEqual(true, task.IsCompleted);
            Assert.AreEqual(1, task.Result);

            var httpCache = new HtmlAsyncCache();
            var pageTask  = httpCache.GetValue(new Uri("http://www.baidu.com"));

            Assert.AreEqual(true, pageTask.IsCompleted);
        }