Thanks All!
My mistake: I forget use AddNewlyCreatedDBObject method of Transaction
It work:
Document dwg = acadApp.DocumentManager.MdiActiveDocument;
Database db = dwg.Database;
using (Transaction t = dwg.TransactionManager.StartTransaction())
{
TableStyle ts = new TableStyle();
ObjectId stId = ts.PostTableStyleToDatabase(db, "MyTableStyle");
t.AddNewlyCreatedDBObject(ts, true);
AcadApplication app = (AcadApplication)acadApp.AcadApplication;
int c = stId.OldIdPtr.ToInt32();//Good work!
////or
//int c = (int)stId.OldIdPtr;// It to good work!
object x = app.ActiveDocument.ObjectIdToObject(c);
IAcadTableStyle2 ts2 = (IAcadTableStyle2)x;
t.Commit();
}
And It work too:
Document dwg = acadApp.DocumentManager.MdiActiveDocument;
Database db = dwg.Database;
using (Transaction t = dwg.TransactionManager.StartTransaction())
{
TableStyle ts = new TableStyle();
DBDictionary tableStylesDict = (DBDictionary)t.GetObject(db.TableStyleDictionaryId, OpenMode.ForWrite);
ObjectId stId = tableStylesDict.SetAt("MyTableStyle", ts);
t.AddNewlyCreatedDBObject(ts, true);
AcadApplication app = (AcadApplication)acadApp.AcadApplication;
////int c = stId.OldIdPtr.ToInt32();//Good work!
////or
int c = (int)stId.OldIdPtr;// It to good work!
object x = app.ActiveDocument.ObjectIdToObject(c);
IAcadTableStyle2 ts2 = (IAcadTableStyle2)x;
t.Commit();
}