Exemplo n.º 1
0
        public override DispatcherOperation LoadEntries(uint startFromID)
        {
            if (startFromID > Log9KEntry.Counter)
            {
                return(null);
            }
            startFromID--;
            if (IsAddingNewestEntries)
            {
                IsAddingNewestEntries = false;
            }
            if (ScrollToLastLog)
            {
                ScrollToLastLog = false;
            }

            uint lineNumber;

            if (startFromID == 0)
            {
                return(null);
            }

            if (Application.Current == null)
            {
                return(null);
            }

            DispatcherOperation a = Application.Current.Dispatcher.BeginInvoke(new Action(() => {
                if (!FindLineNumber(startFromID, out lineNumber))
                {
                    Log9KCore.Instance.InnerLog("Ошибка: при загрузке логов метод FindLineNumber вернул false");
                    return;
                }

                LineNumberTopTempFile = lineNumber;
                LogEntryCollection.Clear();
                for (int i = 0; i < LogEntryCollection.MaxCollectionSize; i++)
                {
                    Log9KEntry entry = ReadEntry(lineNumber);
                    if (entry == null)
                    {
                        break;
                    }
                    LogEntryCollection.Add(entry);
                    lineNumber++;
                }
            }), DispatcherPriority.Background);

            return(a);
        }