public void ReadMessages(Folder f) { if (f.ContentCount > 0) { using (var fs = ndb.GetReadStream()) { // Get the Contents table for the folder var ms = ltp.ReadTable <Message>(fs, NID.TypedNID(EnidType.CONTENTS_TABLE, f.Nid), ndb.IsUnicode4K ? pgMessageList4K : pgMessageList, (m, id) => m.Nid = new NID(id)); if (ndb.IsUnicode4K) { foreach (var m in ms) { ltp.ReadProperties <Message>(fs, m.Nid, pgMessageDetail4K, m); } } // We may be called on a background thread, so we need to dispatch this to the UI thread Application.Current.Dispatcher.Invoke(new Action(() => { f.Messages.Clear(); foreach (var m in ms) { f.AddMessage(m); } })); } } }
public void ReadMessageDetails(Message m) { using (var fs = ndb.GetReadStream()) { // Read the contents properties var subNodeTree = ltp.ReadProperties <Message>(fs, m.Nid, pgMessageContent, m); // Read all other properties m.Properties.Clear(); m.Properties.AddRange(ltp.ReadAllProperties(fs, m.Nid, contentExclusions).ToList()); ReadMessageTables(fs, subNodeTree, m); } }