示例#1
0
        /// <summary>
        /// Generate all reports in a list.
        /// </summary>
        /// <param name="reports">List of reports to generate.</param>
        /// <param name="saveReport">True for save reports in the html file.</param>
        /// <param name="filename">Sets the file full or relative path, if folder is given default name will be used in it.</param>
        /// <param name="maxDegreeOfParallelism">Sets the maximum number of concurrent tasks enabled by this ParallelOptions instance.</param>
        /// <returns><see cref="HtmlTemplate"/> with the reports already written in the template.</returns>
        public static HtmlTemplate GenerateReports(Report[] reports, bool saveReport = true, string filename = null, int maxDegreeOfParallelism = -1)
        {
            var htmlTemplate = new HtmlTemplate()
            {
                Filename = filename
            };

            //List<Report> asyncReports = new List<Report>();

            /*if (useSingleThread)
             * {
             *  foreach (var report in reports)
             *  {
             *      //if (report.CanAsync)
             *      //{
             *      //    asyncReports.Add(report);
             *      //    continue;
             *      //}
             *      report.Generate();
             *      htmlTemplate.WriteFromVar(report.GetTemplateVar(), report.Html);
             *  }
             * }
             * else
             * {*/
#if DEBUG
            maxDegreeOfParallelism = 1;
#endif
            var options = new ParallelOptions {
                MaxDegreeOfParallelism = maxDegreeOfParallelism
            };
            Parallel.ForEach(reports, options, report =>
            {
                Debug.WriteLine(report.GetTemplateVar());
                report.Generate();

                lock (htmlTemplate)
                {
                    htmlTemplate.WriteFromVar(report.GetTemplateVar(), report.Html);
                }
            });

            /*foreach (var report in reports)
             * {
             *  htmlTemplate.WriteFromVar(report.GetTemplateVar(), report.Html);
             * }*/


            if (/*!ReferenceEquals(htmlTemplate, null) && */ saveReport)
            {
                htmlTemplate.WriteToFile();
            }

            return(htmlTemplate);
        }
示例#2
0
        /// <summary>
        /// Generate all reports in a list.
        /// </summary>
        /// <param name="reports">List of reports to generate.</param>
        /// <param name="saveReport">True for save reports in the html file.</param>
        /// <param name="filename">Sets the file full or relative path, if folder is given default name will be used in it.</param>
        /// <param name="maxDegreeOfParallelism">Sets the maximum number of concurrent tasks enabled by this ParallelOptions instance.</param>
        /// <returns><see cref="HtmlTemplate"/> with the reports already written in the template.</returns>
        public static HtmlTemplate GenerateReports(Report[] reports, bool saveReport = true, string filename = null, int maxDegreeOfParallelism = -1)
        {
            var htmlTemplate = new HtmlTemplate()
            {
                Filename =  filename
            };
            //List<Report> asyncReports = new List<Report>();

            /*if (useSingleThread)
            {
                foreach (var report in reports)
                {
                    //if (report.CanAsync)
                    //{
                    //    asyncReports.Add(report);
                    //    continue;
                    //}
                    report.Generate();
                    htmlTemplate.WriteFromVar(report.GetTemplateVar(), report.Html);
                }
            }
            else
            {*/
            #if DEBUG
            maxDegreeOfParallelism = 1;
            #endif
            var options = new ParallelOptions { MaxDegreeOfParallelism = maxDegreeOfParallelism };
            Parallel.ForEach(reports, options, report =>
            {
                Debug.WriteLine(report.GetTemplateVar());
                report.Generate();

                lock (htmlTemplate)
                {
                    htmlTemplate.WriteFromVar(report.GetTemplateVar(), report.Html);
                }
            });

            /*foreach (var report in reports)
            {
                htmlTemplate.WriteFromVar(report.GetTemplateVar(), report.Html);
            }*/

            if (/*!ReferenceEquals(htmlTemplate, null) && */saveReport)
            {
                htmlTemplate.WriteToFile();
            }

            return htmlTemplate;
        }