乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 124|回复: 6

从WPF表单调用函数会导致System.ArgumentException

[复制链接]

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2019-7-22 13:22:55 | 显示全部楼层 |阅读模式
我遇到了一个让我非常困惑的问题,我有一个函数可以在Civil 3D中创建一个配置文件,该配置文件具有许多预期传递给它的参数。出于测试目的,该函数中还编写了代码,以使用与这些参数相同的对象创建新变量,并调用 C3D 函数以创建配置文件。我还有2个命令,一个命令使用空对象直接调用函数(因为我只希望它使用这些命令在函数中进行测试),另一个命令打开一个WPF表单,其中包含要选择的对象,然后将其传递给函数。当我使用测试命令时,配置文件按预期创建。当我将命令与表单一起使用时,即使我仅使用函数的测试部分,它也会在System.ArgumentException中出错,该部分不使用任何传递的参数。那么,是什么可能导致 WPF 表单对此函数造成严重破坏呢?以下是代码的片段: PromptEntityOptions opt = new PromptEntityOptions(“\nSelect an Alignment”);。
选择,SetRejectMessage(“\nObject must be an alignment.\n”);。
选择,AddAllowedClass(typeof(Alignment), true);。
ObjectId testAlignID = ed.GetEntity(opt).对象 Id;。
对齐 o 对齐 = 反义,GetObject(testAlignID, OpenMode.ForRead) as Alignment;。
ObjectId testLayerID = oAlignment.LayerId;。
ObjectId testSurfaceId = doc.GetSurfaceIds()[0];。
ObjectId testStyleId = doc.Styles.ProfileStyles[0];。
ObjectId testLabelSetId = doc.Styles.LabelSetStyles.ProfileLabelSetStyles[0];。
--------------------------------------------------------------------------------------------------。
尝试。
{。
当直接从命令调用函数时,下一行工作,从 WPF 窗口调用时失败。。
ObjectId otherprofileId = Profile.CreateFromSurface(“Other Profile”, testAlignID, testSurfaceId, testLayerID, testStyleId, testLabelSetId);。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2019-7-22 13:39:13 | 显示全部楼层
当然,我几乎在发布此内容后立即发现了解决方案。一旦我添加了以下内容,它就会正常工作。 using (DocumentLock dl = doc.LockDocument())。
{。
...在此处创建配置文件的代码。
}。

回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2019-7-23 09:37:09 | 显示全部楼层
我打算提出这个解决方案。
回复

使用道具 举报

129

主题

422

帖子

5

银币

中流砥柱

Rank: 25

铜币
936
发表于 2019-7-25 13:49:06 | 显示全部楼层
顺便说一句,这不是WPF表格。这是一扇WPF窗。我知道语义学,但在WPF身上使用“形式”这个词让我起鸡皮疙瘩。:
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2019-7-26 17:37:58 | 显示全部楼层

哈哈哈....很高兴我不是唯一一个遇到这种事的人!
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2019-8-8 06:42:41 | 显示全部楼层
我只是将它添加到一个长期运行的项目中。:/长期运行...它是git commit # 1.343。异常处理使它保持活力。很高兴我记录了所有的异常情况
您并不孤单。
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2019-8-8 07:09:17 | 显示全部楼层
Document.DocumentLock()返回一个DocumentLock实例,它只提供了一个Dispose()方法。所以,当在使用语句中调用时,将DocumentLock()的返回值存储在变量中对我来说似乎是绝对无用的。在我身边,我使用:使用(doc.LockDocument())。
{。
...这里的代码。
}。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 05:44 , Processed in 0.147620 second(s), 66 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表