コード例 #1
0
        /// <summary>
        /// Получает значение метрики для текущего файла.
        /// </summary>
        /// <param name="metric">Метрика текста.</param>
        /// <returns>Текствое представление метрики.</returns>
        private async Task <string> GetMetric(IMetric metric)
        {
            string result = String.Empty;

            long blockSize = 0x20000;
            long offset = 0, length = file.fileSize < blockSize ? file.fileSize : blockSize;
            var  fileSize = file.fileSize;

            await Task.Run(() =>
            {
                while ((offset + length) <= fileSize)
                {
                    if (!isActive)
                    {
                        break;
                    }

                    metric.DoMetric(file.ReadTextBlock(offset, length));
                    offset += length;
                }
            });

            result = metric.GetStringMetric();

            return(result);
        }