private async static Task <Dictionary <HashTypes, byte[]> > GenerateHashesAsBytes(Stream stream, HashTypes hashtypes) { var buffer = new byte[BUFFER_SIZE]; var hashers = hashtypes.GetHashers(); await Task.Run(() => { var bRead = 0; do { bRead = stream.Read(buffer, 0, buffer.Length); var tasks = new List <Task>(); foreach (var hasher in hashers) { tasks.Add(Task.Run(() => hasher.Value.GenerateIncrementalHash(buffer, bRead))); } Task.WaitAll(tasks.ToArray()); } while (bRead > 0); }); var rslt = new Dictionary <HashTypes, byte[]>(); foreach (var hasher in hashers) { rslt.Add(hasher.Key, hasher.Value.Hash); } return(rslt); }
public void TestGetHashers(HashTypes hashTypes, int numberOfHashers) { var hashers = hashTypes.GetHashers(); hashers.Count.Should().Be(numberOfHashers); }