/// <summary> /// Init this task /// </summary> private void GenerateAction() { byte[] buffer; int blockNumber; lock (Instance) buffer = Source.GetPortionData(out blockNumber); Action calcHashFunc = () => { int blockNum = blockNumber; byte[] block = buffer; using (var sha256 = SHA256.Create()) { var hashedBytes = sha256.ComputeHash(block); var hash = BitConverter.ToString(hashedBytes).Replace("-", string.Empty).ToLower(); string res = $"{blockNum} ->{block.Length} ->{Thread.CurrentThread.ManagedThreadId} ->{hash}"; Result = TaskWriteObjectToFile.GetInstance(StringSource.GetInstance(res)); ActionCompleted?.Invoke(this); } }; ActionToRun = calcHashFunc; }
/// <summary> /// Creator of instance TaskWriteObjectToFile /// </summary> /// <param name="source">String source</param> /// <returns>Instance of TaskWriteObjectToFile</returns> public static TaskWriteObjectToFile GetInstance(ISource source) { TaskWriteObjectToFile taskWriteToFile = new TaskWriteObjectToFile { _source = source }; taskWriteToFile.GenerateAction(); return(taskWriteToFile); }