public async Task <byte[]> Decode(byte[] bloks) { var m = new List <byte>(); for (int i = 0; i < bloks.Length; i += _algorithm.Size) { await Task.Run(() => m.AddRange(_algorithm.DecodeBlock(bloks.Skip(i).Take(_algorithm.Size).ToArray()))); if (Thread.CurrentThread.ManagedThreadId == form.ThreadId) { form.progressBar.Value = (int)(i / (float)bloks.Length * 100); } } return(m.ToArray()); }
public async Task <byte[]> Decode(byte[] code) { var c = (byte[])code.Clone(); var m = new List <byte>(); var prev = _c0; for (int i = 0; i < code.Length; i += _algorithm.Size) { for (int j = 0; j < _algorithm.Size; j++) { c[i + j] ^= prev[j]; } form.progressBar.Value = (int)(i / (float)code.Length * 100); await Task.Run(() => m.AddRange(_algorithm.DecodeBlock(code.Skip(i).Take(_algorithm.Size).ToArray()))); prev = m.Skip(i).Take(_algorithm.Size).ToArray(); } return(m.ToArray()); }