OK Danke, super und einfach erklärt. Selbst fü einen DAU wie mir.
Also mein Code würde so nicht funktionieren, da ich das COMMIT nicht durchgeführt habe.
jetzt sieht man des öfters bei diesen Vorgehensweise, dass viele hier ein
try
catch
finally
einbauen. Ich nehme mal an, dass der TransactionManager auch im Fehlerfall ordentlich beendet werden muss (damit die Db Sperre aufgehoben wird)
Wäre also eher dies hier die richtige VBorgehensweise ??
try
{
BlockReference tBlockReference = (BlockReference)tTransactionManager.GetObject(tBlockId,OpenMode.ForWrite);
AttributeCollection tAttributCollection = tBlockReference .AttributeCollection;
AttributeReference tAttReference1 = new AttributeReference();
tAttReference1.Position = new Point3d(0, 0, 0);
tAttReference1.Tag = "tag1";
tAttReference1.TextString="text1";
tAttributCollection .AppendAttribute(tAttReference1);
tTransavtionManager .AddNewlyCreatedDBObject(tAttReference1, true);
AttributeReference tAttReference2 = new AttributeReference();
tAttReference2.Position = new Point3d(0, 10, 0);
tAttReference2.Tag = "tag2";
tAttReference2.TextString="text2";
tAttributCollection .AppendAttribute(tAttReference2);
tTransavtionManager .AddNewlyCreatedDBObject(tAttReference2, true);
tTransactionManager.commit();
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
ed.WriteMessage(("Exception: " + ex.Message));
}
finally
{
tTransavtionManager.Dispose();
}
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP