revit二次开发之多线程的正确使用

欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207

一、背景

小伙伴们为了加快revit程序运行速度, 可能会考虑使用多线程,但是我们必须首先搞清楚一个问题那就是能不能使用多线程,其次再是如何使用多线程

二、思路

  1. 能否使用多线程?
    答案是肯定的,但是有前提条件,那就是我们多线程中的代码如果调用了revit的api,很可能就会让程序崩溃,更严格一点来说就是,多线程的代码不能修改Document文档中的内容(也就是不能开启Transaction)
    详情可以参看Jeremy这篇文章 No Multithreading in Revit
    里面提到
    “Revit’s internals make use of multiprocessing in only a few select isolated locations. None of these locations currently encompass the code in the Revit API, or any part of it. Thus Autodesk does not recommend making any calls to the Revit API from within simultaneously executing parallel threads. It may be that some part of the Revit API is isolated enough to be able to execute successfully from within such threading code in a test environment; this should not be taken to be a guarantee that the same source code will function for any model or situation, or that a future change in Revit will not cause this code to cease to function.”
    翻译过来就是
    "Revit的内部结构仅在少数选择隔离的位置使用多处理。这些位置当前都不包含Revit API中的代码或其任何部分。因此,Autodesk不建议在同时执行内部对Revit API进行任何调用并行线程。可能是Revit API的某些部分足够孤立,能够在测试环境中的这种线程代码中成功执行;这不应该被视为保证相同的源代码将适用于任何模型或情况,或Revit的未来变化不会导致此代码停止运行。"
  2. 如何使用
    如果只是简单的使用多线程,可以参看菜鸟教程之多线程的使用
    Saikat这篇文章Multi-threading with Revit进一步解释了如何在revit中如何使用多线程,大家可以自行探索。

三、注意事项

需要Revit二次开发全流程教学 的朋友可以联系我qq:1056295111
1.首先要判断代码能否使用多线程,具体原则就是不开启事务以及结合第二篇文章的讲解,进一步的探索需要小伙伴根据自己的代码去尝试完成。
2.我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出revit二次开发以及编程干货。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值