Example #1
0
        private void TailUpdateEvent(TaileFileInfo taileFileInfo)
        {
            if (taileFileInfo.Name == File)
            {
                _evaluate = false;
                Updated   = true;
                int rows = 1;
                FileSize = taileFileInfo.Size;

                foreach (var item in taileFileInfo.FilesRows)
                {
                    if (rows >= taileFileInfo.FilesRows.Count)
                    {
                        if (Dispatcher != null)
                        {
                            Dispatcher.BeginInvoke(
                                new Action(() => AddRow(item, true)));
                        }
                    }
                    else
                    {
                        if (Dispatcher != null)
                        {
                            Dispatcher.BeginInvoke(
                                new Action(() => AddRow(item)));
                        }
                    }
                    rows++;
                }
            }
        }
Example #2
0
        /// <summary>
        /// Find tab page by name from tail tabFile
        /// and call updatePage
        /// </summary>
        /// <param name="taileFileInfo"></param>
        private void TailUpdateEvent(TaileFileInfo taileFileInfo)
        {
            var page = tabControl1.TabPages[taileFileInfo.TabName];

            if (page.InvokeRequired)
            {
                page.Invoke(new EventHandler(delegate { page.Update(tabControl1); }));
            }
        }
Example #3
0
        public void TailFile(CancellationToken ct)
        {
            using (StreamReader reader = new StreamReader(new FileStream(_fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
            {
                //start at the end of the file
                long lastMaxOffset = reader.BaseStream.Length;

                //while (_tailingFile)
                while (!ct.IsCancellationRequested)
                {
                    Thread.Sleep(100);

                    //if the file size has not changed, idle
                    if (reader.BaseStream.Length == lastMaxOffset)
                    {
                        continue;
                    }

                    //Create tailfile info object
                    var tailFileInfo = new TaileFileInfo
                    {
                        Name    = _fileName,
                        Size    = reader.BaseStream.Length,
                        TabName = _tabName
                    };

                    //seek to the last max offset
                    reader.BaseStream.Seek(lastMaxOffset, SeekOrigin.Begin);

                    //read out of the file until the EOF
                    string line;

                    while ((line = reader.ReadLine()) != null)
                    {
                        tailFileInfo.FilesRows.Add(line);
                    }

                    //publish new file rows.
                    _messageService.Publish(tailFileInfo);

                    //update the last max offset
                    lastMaxOffset = reader.BaseStream.Position;
                }
                reader.Close();
                reader.DiscardBufferedData();
                reader.Dispose();
                Dispose();
            }
        }