Keith™ 发表于 2021-11-30 01:18:00

. NET应用程序错误在AC2022但不是AC2017

由于对象的当前状态,操作无效。
我的理解是,这是由于过早、完全不正确地提交事务,或者错误地访问错误的数据库造成的
这些都没有发生。这是创建事务、修改数据库和提交,它一次又一次地工作,但在插入新块后似乎总是失败
我已经阅读了有关此错误的Autodesk帖子,但没有结果
此外,我是否需要使用以下2022引用进行构建?这可能是问题所在吗
acoremgd.dll
acdbmgd.dll
acmgd.dll
AdWindows.dll
**** Hidden Message *****

CADbloke 发表于 2021-11-30 03:13:02

使用最新的库进行构建可能是一个好主意,只是为了查看是否有标记为已折旧或过时的函数。
这些只显示编译器警告

Keith™ 发表于 2021-12-5 14:02:58

在绘图上调用/运行 AUDIT 是否有帮助?我以前见过审计解决这些谜团。
新块中有什么?可能的 ATTSYNC 问题?

CADbloke 发表于 2021-12-6 01:59:09

如果我不得不猜测的话,我想这是当从光纤切换到线程时,
因此它可能是一个对象或事务打开时间过长,在另一个线程上打开了一些东西,沿着这些线
可能是由于此更改而刚刚暴露的某些错误。

Keith™ 发表于 2021-12-6 17:27:39

好吧,我将重新编译2022库,看看这是否有什么不同,但我必须重建WM并重新安装软件
显然,我使用的虚拟机不支持.NET4.7,这是构建2022库的最低要求。

CADbloke 发表于 2021-12-6 20:54:30

我用v2013库和.NET 4.7.2构建CAD替换-我从未见过这种错误,即使是在比ACAD 2022之前更麻烦的情况下。
是否有任何处理是在UI线程之外完成的?

Keith™ 发表于 2021-12-6 21:36:52

应用程序的工作方式是用户选择要输入到图形中的数据文件。处理数据,然后调用插入夹具插入块。处理完所有数据并插入所有块后,应用程序会根据其值关闭属性可见性。
插入块没有问题,然后引发错误。
我最初认为这是切换例程,但是如果我单独使用切换函数,它们就可以正常工作并且不会抛出错误。

n.yuan 发表于 2021-12-6 22:38:57

抛出错误的对象是什么类型的?类型或对象是否一致。在任何阶段运行AUDIT命令或Database.Audit是否有帮助?AUDIT命令是AutoCAD版本的“这很好”模因。您如何切换属性显示?ATTDISP命令?
也许可以在属性和/或块插入上尝试RecordGraphicsModiated(true)?这可能只是为了渲染,因此可能不相关。属性可见性对崩溃有影响吗?

Chumplybum 发表于 2021-12-15 18:00:53

我希望我知道,但我不知道。它只是在2022年抛出错误,所以我只能假设它与我正在引用的底层库中的一些更改有关。
块是标准块,其中包含嵌套块。块有一系列与之关联的属性。
切换时,函数创建一个选择集,打开每个块以供读取,然后遍历每个属性。如果标签匹配过滤器,则调用UpgradeOpen,将可见属性设置为false,然后调用DowngradeOpen。一旦迭代完成,事务就被提交。
切换可见性在独立于插入过程使用时没有任何区别。它只在插入块时发生。
当我得到一个可以测试的VM时,它将更容易隔离。

Keith™ 发表于 2021-12-16 09:19:51

只是想缩小可能的原因范围:您是否更改Entity.Visiable属性以切换属性的可见性?如果是这样,您可能需要尝试改为切换 AttributeReference.Invisible 属性,以查看会发生什么情况。
页: [1] 2
查看完整版本: . NET应用程序错误在AC2022但不是AC2017