public string ProcessTask(List <Loanbook_Data> loanbook, List <LifetimeEad> lifetimeEad, List <LifetimeLgd> lifetimeLGD, List <IrFactor> cummulativeDiscountFactor, List <LifeTimeProjections> eadInput, List <StageClassification> stageClassifcation, bool overrideExist) { var lifetimePds = new ScenarioEclWorkings(this._eclId, this._Scenario, this._eclType).Get_LifetimePd_And_RedefaultLifetimePD_Result(); //var stageClassifcation = stageClassifcation;// GetStageClassification(loanbook); var threads = loanbook.Count / 500; threads = threads + 1; var taskLst = new List <Task>(); //threads = 1; for (int i = 0; i < threads; i++) { var sub_LoanBook = loanbook.Skip(i * 500).Take(500).ToList(); var contractNo = sub_LoanBook.Select(o => o.ContractId).ToList(); var task = Task.Run(() => { RunFrameWorkJob(lifetimeEad, lifetimeLGD, cummulativeDiscountFactor, eadInput, lifetimePds, stageClassifcation, overrideExist, contractNo); }); taskLst.Add(task); } Log4Net.Log.Info($"Total Task : {taskLst.Count()}"); var completedTask = taskLst.Where(o => o.IsCompleted).Count(); Log4Net.Log.Info($"Task Completed: {completedTask}"); //while (!taskLst.Any(o => o.IsCompleted)) var tskStatusLst = new List <TaskStatus> { TaskStatus.RanToCompletion, TaskStatus.Faulted }; while (0 < 1) { if (taskLst.All(o => tskStatusLst.Contains(o.Status))) { break; } //Do Nothing } return(""); }
private void RunFrameWorkJob(List <LifetimeEad> lifetimeEad, List <LifetimeLgd> lifetimeLGD, List <IrFactor> cummulativeDiscountFactor, List <LifeTimeProjections> eadInput, List <LifeTimeObject> lifetimePds, List <StageClassification> stageClassification, bool overrideExist, List <string> contractNo) { var sub_stageClassification = stageClassification.Where(o => contractNo.Contains(o.ContractId)).ToList(); var sub_lifetimeEad = lifetimeEad.Where(o => contractNo.Contains(o.ContractId)).ToList(); var sub_lifetimeLGD = lifetimeLGD.Where(o => contractNo.Contains(o.ContractId)).ToList(); var sub_eadInput = eadInput.Where(o => contractNo.Contains(o.Contract_no)).ToList(); var obj = new ScenarioEclWorkings(this._eclId, this._Scenario, this._eclType); var d = obj.ComputeFinalEcl(sub_lifetimeEad, sub_lifetimeLGD, sub_eadInput, cummulativeDiscountFactor, lifetimePds, sub_stageClassification); var _scenerio = 0; if (this._Scenario == ECL_Scenario.Best) { _scenerio = 1; } if (this._Scenario == ECL_Scenario.Optimistic) { _scenerio = 2; } if (this._Scenario == ECL_Scenario.Downturn) { _scenerio = 3; } foreach (var _d in d) { _d.eCL_Scenario = _scenerio; } if (overrideExist) { var r = Util.FileSystemStorage <FinalEcl> .WriteCsvData(this._eclId, ECLStringConstants.i.FrameworkResultOverride(this._eclType), d); //Save to Framwork Override table Log4Net.Log.Info($"Inserting into override table {d.Count}"); } else { var r = Util.FileSystemStorage <FinalEcl> .WriteCsvData(this._eclId, ECLStringConstants.i.FrameworkResult(this._eclType), d); //save to Framework table Log4Net.Log.Info($"Inserting into Non override table {d.Count}"); } }