/// <summary> /// Cleanup OS handles for <see cref="_fileStreamReader"/> and <see cref="FileObserver"/>. /// </summary> protected override void PostStop() { _observer.Dispose(); _observer = null; _fileStreamReader.Close(); _fileStreamReader.Dispose(); base.PostStop(); }
/// <summary> /// Initialization logic for actor that will tail changes to a file. /// </summary> protected override void PreStart() { // start watching file for changes _observer = new FileObserver(Self, Path.GetFullPath(_filePath)); _observer.Start(); // open the file stream with shared read/write permissions (so file can be written to while open) _fileStream = new FileStream(Path.GetFullPath(_filePath), FileMode.Open, FileAccess.Read, FileShare.ReadWrite); _fileStreamReader = new StreamReader(_fileStream, Encoding.UTF8); // read the initial contents of the file and send it to console as first message var text = _fileStreamReader.ReadToEnd(); Self.Tell(new InitialRead(_filePath, text)); }