.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
962 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
jeff
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. 

 

You can also find your answers @ TheSwamp

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