/// <summary> /// Release all resource. /// </summary> public void Dispose() { _fileCloseHandle.Free(); _fileLengthHandle.Free(); _fileReadHandle.Free(); _fileSeekHandle.Free(); _fileCloseHandler = null; _fileLengthHandler = null; _fileReadHandler = null; _fileSeekHandler = null; StreamHandlers = new FileHandlers(); }
/// <summary> /// Create a <see cref="BassStream"/> form a <see cref="Stream"/>. /// </summary> /// <param name="stream">Stream to wrap.</param> public BassStream(Stream stream) { _stream = stream; _streamPosition = _stream.Position; _fileCloseHandler = OnFileClose; _fileLengthHandler = OnFileLength; _fileReadHandler = OnFileRead; _fileSeekHandler = OnFileSeek; _fileCloseHandle = GCHandle.Alloc(_fileCloseHandler); _fileLengthHandle = GCHandle.Alloc(_fileLengthHandler); _fileReadHandle = GCHandle.Alloc(_fileReadHandler); _fileSeekHandle = GCHandle.Alloc(_fileSeekHandler); StreamHandlers = new FileHandlers { CloseHandler = _fileCloseHandler, LengthHandler = _fileLengthHandler, ReadHandler = _fileReadHandler, SeekHandler = _fileSeekHandler }; }