//Task t1 = Task.Factory.StartNew(() => NprintingReqResRepository.TasksExecution("1")); //Task t2 = Task.Factory.StartNew(() => NprintingReqResRepository.TasksExecution("1")); // var result = t1.Result.Concat(t2.Result); public async Task RunTasks() { IsAdhoc = false; DataTable taskExecutionDetails = null; var tasks = new List <Task>(); try { taskExecutionDetails = new DataTable(); taskExecutionDetails = GetTaskExecutionDetails(); if (taskExecutionDetails != null && taskExecutionDetails.Rows.Count > 0) { foreach (DataRow dr in taskExecutionDetails.Rows) { string TaskID = dr["NprintingTaskID"].ToString(); // NprintingReqResRepository.TasksExecution(TaskID); tasks.Add(Task.Run(() => NprintingReqResRepository.TasksExecution(TaskID, 1))); } //Parallel.For(0, taskExecutionDetails.Rows.Count, // async i => // { // await NprintingReqResRepository.TasksExecution(taskExecutionDetails.Rows[i]["NprintingTaskID"].ToString()); // }); await Task.WhenAll(tasks); } // var tasks = new List<Task> //{ // new Task(async () => await DoWork()), // //and so on with the other 9 similar tasks //} Parallel.ForEach(tasks, task => { task.Start(); }); Task.WhenAll(tasks).ContinueWith(done => { //Run the other tasks Console.WriteLine(tasks); }); } catch (Exception ex) { LoggerHelper.ExcpLogger("Window Service Program", "ExecuteNprintingTask", ex); } }
//public async Task DoWork() //{ // var results = await NprintingReqResRepository.TasksExecution("1"); // foreach (var result in results) // { // await ReadFromNetwork(result.Url); // } //} //} /// <summary> /// Get the Task details from database /// </summary> static void ExecuteNprintingTaskAdhoc() { IsAdhoc = true; DataTable taskExecutionDetails = null; try { taskExecutionDetails = new DataTable(); taskExecutionDetails = GetAdhocTaskExecutionDetails(); if (taskExecutionDetails != null && taskExecutionDetails.Rows.Count > 0) { foreach (DataRow dr in taskExecutionDetails.Rows) { string TaskID = dr["NprintingTaskID"].ToString(); NprintingReqResRepository.TasksExecution(TaskID, 1); } } } catch (Exception ex) { LoggerHelper.ExcpLogger("Window Service Program", "ExecuteNprintingTask", ex); } }
/// <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); } }