/// <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)); } }
/// <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))); }