internal void ModifySensitivityLabels(SensitivityClassificationModel model,
                                              Action <SensitivityLabelModel> modifySensitivityLabel)
        {
            ConcurrentQueue <Exception> exceptions = new ConcurrentQueue <Exception>();

            Parallel.ForEach <SensitivityLabelModel>(model.SensitivityLabels,
                                                     sensitivityLabelModel =>
            {
                try
                {
                    modifySensitivityLabel(sensitivityLabelModel);
                }
                catch (Exception e)
                {
                    exceptions.Enqueue(e);
                }
            });

            if (!exceptions.IsEmpty)
            {
                int       exceptionsCount = exceptions.Count;
                Exception lastException   = exceptions.Last();
                throw (exceptionsCount == 1) ? lastException :
                      new Exception($"Operation failed for {exceptionsCount} sensitivity classifications", lastException);
            }
        }
示例#2
0
        internal void ModifySensitivityLabels(SensitivityClassificationModel model,
                                              Action <SensitivityLabelModel> modifySensitivityLabel)
        {
            int       failuresNumber = 0;
            Exception exception      = null;

            foreach (SensitivityLabelModel sensitivityLabelModel in model.SensitivityLabels)
            {
                try
                {
                    modifySensitivityLabel(sensitivityLabelModel);
                }
                catch (Exception e)
                {
                    exception = e;
                    failuresNumber++;
                }
            }

            if (failuresNumber > 0)
            {
                throw (failuresNumber == 1) ? exception :
                      new Exception($"Operation failed for {failuresNumber} sensitivity classifications", exception);
            }
        }