/// <summary> /// Close stream /// ReadOnlyMode is reset to false /// </summary> public void Close() { if (IsOpen) { _stream.Close(); _stream = null; ReadOnlyMode = false; IsOnLongProcess = false; LongProcessProgress = 0; _streamType = ByteProviderStreamType.Nothing; Closed?.Invoke(this, new EventArgs()); } }
/// <summary> /// Open file are set in FileName property /// </summary> public void OpenFile() { if (File.Exists(FileName)) { Close(); bool readOnlyMode = false; try { _stream = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);; } catch { if (MessageBox.Show("The file is locked. Do you want to open it in read-only mode?", "", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { _stream = File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); readOnlyMode = true; } } if (readOnlyMode) { ReadOnlyMode = true; } _streamType = ByteProviderStreamType.File; StreamOpened?.Invoke(this, new EventArgs()); } else { throw new FileNotFoundException(); } }