public BufferedTextFileReader(FileProcessingProvider processor, string path) { var fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); var bs = new BufferedStream(fs); sr = new StreamReader(bs); this._processor = processor; }
private void ReadFileHandler() { ReadText = "Reading... " + (_counter++) + Environment.NewLine; var provider = new FileProcessingProvider(); var processor = new CustomFileProcessor(); processor.Subscribe(provider); var progress = new Progress<BufferedTextFileReaderArgs>(); Debug.WriteLine("Add Progress Handler: " + Thread.CurrentThread.ManagedThreadId); progress.ProgressChanged += OnProgressChanged; ReadFileAsync(progress, provider).ContinueWith(antecedent => { Debug.WriteLine("Continue With: " + Thread.CurrentThread.ManagedThreadId); DispatcherHelper.CheckBeginInvokeOnUI( () => { Debug.WriteLine("Remove Progress Handler: " + Thread.CurrentThread.ManagedThreadId); progress.ProgressChanged -= OnProgressChanged; }); }); }
public async Task ReadFileAsync(IProgress<BufferedTextFileReaderArgs> progress, FileProcessingProvider provider) { using (var fr = new BufferedTextFileReader(provider, FileName??@"c:\Temp\trTask_InsertUpdate.sql")) { await fr.ReadLineAsync(progress); } }