示例#1
0
 private void CheckAbilityToUseParallelExtensions()
 {
     if (IsUseParallelExtensionsCheckBox.Checked)
     {
         if (!CParallelExtensionsProvider.IsCanUseParallelExtensions())
         {
             MessageBox.Show(ICloneLocalization.CMNMESS_CannotUseParallelExtensions, CWindowNamer.BuildWindowName(ICloneLocalization.CSW_WindowHeader), MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }
 }
示例#2
0
        /// <summary>
        /// Считать файлы с жёсткого диска и загрузить в память
        /// </summary>
        /// <param name="FilesToLoad"></param>
        protected override void LoadFilesToMemory(List <string> FilesToLoad)
        {
            if (LoadFilesOptions.IsUseParallelExtensions && CParallelExtensionsProvider.IsCanUseParallelExtensions())
            {
                ParallelOptions po = new ParallelOptions();
                po.CancellationToken      = m_CancellationToken.Token;
                po.MaxDegreeOfParallelism = Environment.ProcessorCount;

                try
                {
                    Parallel.ForEach(FilesToLoad, po, (any_file_name) =>
                    {
                        if (!GetCancelOperationFlag())
                        {
                            try
                            {
                                LoadOneFile(any_file_name);
                                OnLoadFilesProgress();
                            }
                            catch
                            {
                                // пока что так. потом нужно будет сделать журнал и записать туда ошибку.
                                // и потом продолжить чтение файлов
                                throw;
                            }
                        }
                        else
                        {
                            po.CancellationToken.ThrowIfCancellationRequested();
                        }
                    });
                }
                catch (OperationCanceledException)
                {
                }
            }
            else
            {
                foreach (string any_file_name in FilesToLoad)
                {
                    if (!GetCancelOperationFlag())
                    {
                        try
                        {
                            LoadOneFile(any_file_name);
                            OnLoadFilesProgress();
                        }
                        catch
                        {
                            // пока что так. потом нужно будет сделать журнал и записать туда ошибку.
                            // и потом продолжить чтение файлов
                            throw;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }