Files
speckle-sharp-connectors/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/TransactionContext.cs
T
2024-07-04 11:56:34 +01:00

33 lines
855 B
C#

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
namespace Speckle.Connectors.Autocad.HostApp;
[System.Diagnostics.CodeAnalysis.SuppressMessage(
"Usage",
"CA2213:Disposable fields should be disposed",
Justification = "Analyzer false positive with Autocad classes"
)]
public sealed class TransactionContext : IDisposable
{
private DocumentLock? _documentLock;
private Transaction? _transaction;
public static TransactionContext StartTransaction(Document document) => new(document);
private TransactionContext(Document document)
{
_documentLock = document.LockDocument();
_transaction = document.Database.TransactionManager.StartTransaction();
}
public void Dispose()
{
_transaction?.Commit();
_transaction = null;
_documentLock?.Dispose();
_documentLock = null;
}
}