private async void ExtractFanoWorker(object sender, DoWorkEventArgs e) { long progress = 0; var reader = new BufferedReader(2000000, mInputStreamFanoO); var writer = new BufferedWriter(2000000, mOutputStreamFanoO); var len = mInputStreamFanoO.Length; if (len == 0) { len = 1; } var extractor = new FanoEncoder(reader, writer); extractor.WordLength += (x, y) => len = y / x * 8; extractor.WordsWritten += x => { progress += x; }; Timer t = new Timer(o => mFanoOWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25); await extractor.Decode(); t.Dispose(); await writer.FlushBuffer(); mInputStreamFanoO.Close(); mOutputStreamFanoO.Close(); }
private async void CompressFanoWorker(object sender, DoWorkEventArgs e) { long progress = 0; var reader = new BufferedReader(2000000, mInputStreamFanoI); var writer = new BufferedWriter(2000000, mOutputStreamFanoI); var len = mInputStreamFanoI.Length / mWordLength * 8; if (len == 0) { len = 1; } var compressor = new FanoEncoder(reader, writer); compressor.WordsWritten += x => { progress += x; }; Timer t = new Timer(o => mFanoIWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25); await compressor.Encode(mWordLength); t.Dispose(); await writer.FlushBuffer(); mInputStreamFanoI.Close(); mOutputStreamFanoI.Close(); }