示例#1
0
        /// <summary>
        /// Set autentication in Nprinting and Get the Task details from database.
        /// </summary>
        // public async Task ExecuteNprintingTask()
        static void ExecuteNprintingTask()
        {
            IsAdhoc = false;
            DataTable taskExecutionDetails = null;
            DataTable distinctReprots      = null;

            try
            {
                taskExecutionDetails = new DataTable();
                taskExecutionDetails = GetTaskExecutionDetails();


                if (taskExecutionDetails != null && taskExecutionDetails.Rows.Count > 0)
                {
                    //  var dtUniqueReportList = taskExecutionDetails.AsEnumerable()
                    //.Select(row => new
                    //{
                    //    ReportID = row.Field<Int32>("ReportID"),

                    //})
                    //.Distinct();
                    //  dtUniqueReportList.ToArray();

                    //var tasks = new List<Task>();
                    var listOfActions = new List <Action>();
                    distinctReprots = taskExecutionDetails.AsEnumerable()
                                      .GroupBy(row => new
                    {
                        ReportID = row.Field <Int32>("ReportID"),
                    })
                                      .Select(group => group.First())
                                      .CopyToDataTable();

                    NprintingReqResRepository obj = new NprintingReqResRepository();
                    obj.InsertLog("start", "start", DateTime.Now);

                    #region Parallel

                    foreach (DataRow dr in distinctReprots.Rows)
                    {
                        string TaskID   = dr["NprintingTaskID"].ToString();
                        Int32  ReportID = Convert.ToInt32(dr["ReportID"]);

                        listOfActions.Add(() => NprintingReqResRepository.excuteReportBunch(taskExecutionDetails, ReportID));
                    }

                    Parallel.Invoke(listOfActions.ToArray());
                    #endregion


                    #region sequential

                    //foreach (DataRow dr in taskExecutionDetails.Rows)
                    //{
                    //    string TaskID = dr["NprintingTaskID"].ToString();
                    //    Int32 ReportID = Convert.ToInt32(dr["ReportID"]);

                    //    NprintingReqResRepository.TasksExecution(TaskID, ReportID);
                    //}

                    #endregion
                }
            }
            catch (Exception ex)
            {
                LoggerHelper.ExcpLogger("Window Service Program", "ExecuteNprintingTask", ex);
            }
        }