Usually, ITransaction::Commit or Abort calls are performed synchronously. When an application calls ITransaction::Commit, the calling thread in the application blocks until the end of phase one of the two-phase commit protocol. When an application calls ITransaction::Abort, the calling thread in the application blocks only briefly. Control is returned to the application as soon as the commit coordinator is notified that the transaction should be aborted.
To entirely avoid blocking the calling thread, use asynchronous Commit or Abort calls. To call Commit asynchronously, specify XACTTC_ASYNC for the grfTC parameter. To call Abort asynchronously, specify TRUE for the fAsync parameter.
For more information about asynchronous Commit and Abort calls, see ITransaction in Chapter 5, "MS DTC Programmer's Reference."