Dumb question: What is the difference? When to use one or the other? I've made the usual investigation and found these very good articles:
Can anyone add some additional insight? It appears that db.TransactionManager will serve in all situations. Thanks, Dale
Solved! Go to Solution.
Solved by jeff. Go to Solution.
Loooking at it quickly in reflector it inherits from TransactionManager and looks like it just adds the functionality to flush graphics
[Wrapper("AcTransactionManager")] public sealed class TransactionManager : TransactionManager { // Methods internal TransactionManager(IntPtr unmanagedObject, [MarshalAs(UnmanagedType.U1)] bool bAutoDelete); protected sealed override void DeleteUnmanagedObject(); public void EnableGraphicsFlush([MarshalAs(UnmanagedType.U1)] bool doEnable); public void FlushGraphics(); internal unsafe AcTransactionManager* GetImpObj(); public sealed override Transaction StartTransaction(); // Properties public override Transaction TopTransaction { get; } }
It uses a AppTransaction that inherits from Transaction looks it just overrides Commit() and uses base functionality then flushes the graphics.
internal sealed class AppTransaction : Transaction { // Fields private TransactionManager m_mgr; // Methods protected internal AppTransaction(IntPtr unmanagedPointer, [MarshalAs(UnmanagedType.U1)] bool autoDelete, TransactionManager mgr) : base(unmanagedPointer, autoDelete) { this.m_mgr = mgr; } public sealed override void Commit() { base.Commit(); ((TransactionManager) this.TransactionManager).FlushGraphics(); } // Properties public override TransactionManager TransactionManager { get { return this.m_mgr; } } }
So looks like if want to call FlushGraphics for each commit then use the Document TransactionManager.
Now that I say that seems like I just saw Tony mention to use the Documents Transmamnger when it came to regenerating graphics or something similar.