在Parallel.Foreach中更新DB时的空值

时间:2013-12-04 12:10:28

标签: c# parallel-processing pfx

我使用以下脚本从外部服务获取数据并以dB为单位存储。在某些极少数情况下,使用空值更新少于1%的记录。在下面的代码中,“re.status = fail”我们看到null。如果有任何问题,请告诉我们。

    public void ProcessEnquiries()
    {

        List<req> request = new List<req>();

        var options = new ParallelOptions { MaxDegreeOfParallelism = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["MaxDegreeOfParallelism"]) };
        try
        {
            Parallel.ForEach(request, options, currentRequest =>
            {
                ProcessedRequest processedRequest = null;
                processedRequest = CommunicateToWS(currentRequest);  // Here we call to webservice
            });
        }
        catch (AggregateException exception)
        {
            foreach (Exception ex in exception.InnerExceptions)
            {
                // Handle Exception

            }            
       }
    }

    public ProcessedRequest CommunicateToWS(req objReq)
    {
         ProcessedRequest re = new ProcessedRequest();
        using (WebCall  obj = new WebCall())
        {

            re.no = refnu;
            try
            {
                retval = obj.getValue(inval);
                objProxy.Close();
                //get data
                // parse and store to DB
            }
            catch (Exception e)
            {
                 re.status = "fail";
                //update DB that request has failed
                //Handle Exception
                obj.Close();
            }
        }
    }

0 个答案:

没有答案