BExplorer.Shell.AsyncUnbuffCopy.AsyncReadFile C# (CSharp) Method

AsyncReadFile() private static method

private static AsyncReadFile ( ) : void
return void
		private static void AsyncReadFile() {
			//open input file
			try {
				_infile = new FileStream(_inputfile, FileMode.Open, FileAccess.Read, FileShare.Read, CopyBufferSize, FileFlagNoBuffering);
			} catch {
				throw;
			}
			//if we have data read it
			while (_totalbytesread < _infilesize) {

				_bytesRead1 = _infile.Read(Buffer1, 0, CopyBufferSize);
				Monitor.Enter(Locker1);
				try {
					while (_buffer2Dirty) Monitor.Wait(Locker1);
					Buffer.BlockCopy(Buffer1, 0, Buffer2, 0, _bytesRead1);
					_buffer2Dirty = true;
					_bytesRead2 = _bytesRead1;
					_totalbytesread = _totalbytesread + _bytesRead1;
					Monitor.PulseAll(Locker1);

				} catch {
					_readfailed = true;
					throw;
				} finally { Monitor.Exit(Locker1); }
			}
			//clean up open handle
			_infile.Close();
			_infile.Dispose();
		}