小编dvi*_*rus的帖子

Parallel.ForEach错误HttpContext.Current

这种方法 - doDayBegin(item.BranchId)需要很长时间才能执行.所以我用Parallel.ForEach它来并行执行它.当我使用正常foreach循环时它的工作正常但当我使用Parallel.ForEach它时显示此错误
对象引用未设置为对象的实例.

 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 …
Run Code Online (Sandbox Code Playgroud)

c# linq parallel-processing asp.net-mvc entity-framework

9
推荐指数
1
解决办法
6059
查看次数

Parallel.ForEach中长时间运行进程的进度条

这个方法 - doDayBegin(item.BranchId)需要很长时间才能执行.所以我使用Parallel.ForEach并行执行它.我的问题是现在我想在网页上显示进度,以便用户了解进度.
我不是线程专家.所以给我的建议我该怎么办?我怎么能做到这一点.我真的不知道.

   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;
                var context = System.Web.HttpContext.Current;


                Parallel.ForEach(_listDB0010020Vm, item =>
                {
                    doDayBegin(item.BranchId, context);
                });

                DateTime end = DateTime.UtcNow;
                TimeSpan duration = end - start;
                return Json(new
                {
                    success = true,
                    message = "Day Begin Process Completed Successfully!" + duration
                });
            } …
Run Code Online (Sandbox Code Playgroud)

.net c# parallel-processing asp.net-mvc multithreading

1
推荐指数
1
解决办法
4602
查看次数