.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

doc.TransactionManager or db.TransactionManager

1 REPLY 1
SOLVED
Reply
Message 1 of 2
Dale.Bartlett
975 Views, 1 Reply

doc.TransactionManager or db.TransactionManager

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:

http://spiderinnet1.typepad.com/blog/2012/04/database-transactionmanager-and-document-transactionman...

http://spiderinnet1.typepad.com/blog/2012/05/document-transactionmanager-is-nowhere-for-external-dat... 

Can anyone add some additional insight? It appears that db.TransactionManager will serve in all situations. Thanks, Dale




______________
Yes, I'm Satoshi.
1 REPLY 1
Message 2 of 2
Anonymous
in reply to: Dale.Bartlett

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. 

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost