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); } }