Пример #1
0
        public void Can_ExecuteDataTableTask()
        {
            var dsTasks = new List <Task>();

            // 여러 테이블의 정보를 비동기적으로 거의 동시에 로드합니다.
            //
            foreach (var section in Sections2)
            {
                var query = DefaultAdoRepository.QueryProvider.GetQuery(section, QueryKey);
                Assert.IsNotEmpty(query);

                var task = DefaultAdoRepository
                           .ExecuteDataTableAsync(query)
                           .ContinueWith(antecedent => {
                    using (var dataTable = antecedent.Result) {
                        Assert.IsFalse(dataTable.HasErrors);

                        if (IsDebugEnabled)
                        {
                            log.Debug("Table[{0}] has [{1}] rows", dataTable.TableName, dataTable.Rows.Count);
                        }
                    }
                },
                                         TaskContinuationOptions.ExecuteSynchronously);
                dsTasks.Add(task);
            }

            Task.WaitAll(dsTasks.ToArray());
            dsTasks.All(t => t.IsCompleted).Should().Be.True();
        }
Пример #2
0
        public void Can_ExecuteDataReaderTask()
        {
            var dsTasks = new List <Task>();

            // 여러 테이블의 정보를 비동기적으로 거의 동시에 로드합니다.
            //
            foreach (var section in Sections2)
            {
                var query = DefaultAdoRepository.QueryProvider.GetQuery(section, QueryKey);
                Assert.IsNotEmpty(query);

                var task = DefaultAdoRepository
                           .ExecuteReaderAsync(query)
                           .ContinueWith(antecedent => {
                    using (var reader = antecedent.Result) {
                        var count = 0;

                        while (reader.Read())
                        {
                            count++;
                        }

                        if (IsDebugEnabled)
                        {
                            log.Debug("결과 셋의 갯수=[{0}]", count);
                        }

                        reader.Dispose();
                    }
                },
                                         TaskContinuationOptions.ExecuteSynchronously);
                dsTasks.Add(task);
            }

            Task.WaitAll(dsTasks.ToArray());
            dsTasks.All(t => t.IsCompleted).Should().Be.True();
        }