示例#1
0
        /// <summary>
        /// Loop for generate and add tasks for processing
        /// </summary>
        /// <returns>Task</returns>
        public async Task Run()
        {
            Task taskResult = null;

            try
            {
                taskResult = Task.Run(() => _taskQueue.GeneralLoop());

                _taskQueue.AddTask(TaskWriteObjectToFile.GetInstance(StringSource.GetInstance($"Calc SHA256 for each block of file: {_fileSource.Name}")));
                _taskQueue.AddTask(TaskWriteObjectToFile.GetInstance(StringSource.GetInstance(string.Empty)));

                while (!_fileSource.IsReadComplete())
                {
                    _taskQueue.AddTaskAsync(TaskCalcHashSha256.GetInstance());
                }
            }
            catch (Exception ex)
            {
                Error = ex;
            }
            finally
            {
                _taskQueue.StopLoop();
                try
                {
                    await taskResult;
                }
                catch (Exception ex)
                {
                    Error = ex;
                }
                _taskQueue.GetStatistics(out TimeSpan time, out Dictionary <string, int> stat);
                OnSendCompleted(new SignWorkerAsyncCompletedArgs(time, stat, Error, _taskQueue.Error));
            }
        }
示例#2
0
 /// <summary>
 /// Write header to result file
 /// </summary>
 private void WriteHeadersToResult()
 {
     _taskQueue.AddNotBufferedTask(TaskWriteObjectToFile.GetInstance(StringSource.GetInstance($"Calc SHA256 for each block of file: {_fileSource.Name}")));
     _taskQueue.AddNotBufferedTask(TaskWriteObjectToFile.GetInstance(StringSource.GetInstance(string.Empty)));
 }