Esempio n. 1
0
        public DataRow AppendMessage(AnalogyLogMessage message, string dataSource)
        {
            var table = pages.Last();

            allMessages.Add(message);
            if (table.Rows.Count + 1 > pageSize)
            {
                var isTableInView = currentTable == table;
                if (!isTableInView)
                {
                    owner.AcceptChanges(table, $"{nameof(PagingManager)}-{nameof(AppendMessage)}");
                }
                table = Utils.DataTableConstructor();
                pages.Add(table);
                var pageStartRowIndex = (pages.Count - 1) * pageSize;
                OnPageChanged?.Invoke(this, new AnalogyPagingChanged(new AnalogyPageInformation(table, pages.Count, pageStartRowIndex)));
            }
            lock (table.Rows.SyncRoot)
            {
                DataRow dtr = table.NewRow();
                dtr["Date"]       = message.Date;
                dtr["Text"]       = message.Text ?? "";
                dtr["Source"]     = message.Source ?? "";
                dtr["Level"]      = message.Level.ToString();
                dtr["Class"]      = message.Class.ToString();
                dtr["Category"]   = message.Category ?? "";
                dtr["User"]       = message.User ?? "";
                dtr["Module"]     = message.Module ?? "";
                dtr["Audit"]      = message.AuditLogType;
                dtr["Object"]     = message;
                dtr["ProcessID"]  = message.ProcessID;
                dtr["ThreadID"]   = message.Thread;
                dtr["DataSource"] = dataSource ?? string.Empty;
                table.Rows.Add(dtr);
                return(dtr);
            }
        }