this method - doDayBegin(item.BranchId) takes a lot of time to execute. Therefore, I use Parallel.ForEach to execute it in parallel. When I use a regular foreach , it works fine, but when I use Parallel.ForEach , it shows this error
The reference to the object is not installed in the instance of the object.
public ActionResult Edit([DataSourceRequest] DataSourceRequest request) { try { JavaScriptSerializer js = new JavaScriptSerializer(); List<DB0010020Vm> _listDB0010020Vm = new List<DB0010020Vm>(); string dataDB0010020vm = Request.Form["griddetailsvm"]; if (!string.IsNullOrEmpty(dataDB0010020vm)) { _listDB0010020Vm = js.Deserialize<List<DB0010020Vm>>(dataDB0010020vm). Where(d => d.IsValid == "YES").ToList(); } DateTime start = DateTime.UtcNow; Parallel.ForEach(_listDB0010020Vm, item => { doDayBegin(item.BranchId); }); DateTime end = DateTime.UtcNow; TimeSpan duration = end - start; return Json(new { success = true, message = "Day Begin Process Completed Successfully!" + duration }); } catch (Exception e) { return Json(new { success = false, message = e.Message }); } } public void doDayBegin(int BranchId) { var httpContext = System.Web.HttpContext.Current; IDB0010020Repository _idDB0010020Repository = new DB0010020Repository(); IDB0010044Repository _idDB0010044Repository = new DB0010044Repository(); EBS.DAL.Model.DB0010020 branchDetails = _idDB0010020Repository.FindOne(d => d.BranchId == BranchId); if (branchDetails == null) { ModelState.AddModelError("", "Branch not found!"); } else { try { DateTime LastOpenDate = DateTime.ParseExact(Request.Form["LastOpenDate"].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture); // branchDetails.LastOpenDate = LastOpenDate; // branchDetails.LastOpenDate = Convert.ToDateTime(Request.Form["LastOpenDate"].ToString()); } catch (Exception e) { // branchDetails.LastOpenDate = Convert.ToDateTime("2014-07-25 00:00:00.000"); } OperationStatus status = _idDB0010020Repository.UpdateAndSave(branchDetails); if (status != null && !status.Status) ModelState.AddModelError("Updation failed", status.ExceptionMessage); } EBS.DAL.Model.DB0010044 dayBegin = new DB0010044(); dayBegin.BankId = 1; dayBegin.BranchId = BranchId; dayBegin.DayBeginFlag = 1; //added d DateTime DayDate = DateTime.ParseExact(Request.Form["LastOpenDate"].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture); dayBegin.DayDate = DayDate; //added d // dayBegin.DayDate = Convert.ToDateTime(Request.Form["LastOpenDate"]); dayBegin.DayEndFlag = 0; dayBegin.DayEndStage = 1; dayBegin.DayReopenFlag = 0; OperationStatus status2 = _idDB0010044Repository.AddAndSave(dayBegin); if (status2 != null && !status2.Status) ModelState.AddModelError("Updation failed", status2.ExceptionMessage); else { CreateInwardSessionsForBranch(BranchId); CreateOutwardSessionsForBranch(BranchId); } }
this is mistake 
, what is the problem? why am I getting session null. what way to solve it
source share