欢迎加入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二次开发以及编程干货。

revit二次开发之多线程的正确使用相关推荐

  1. Revit二次开发入门秘籍 01如何入门

    关于入门 我想在开始学习之前大家应该更需要知道如何入门,对比一下我们在学校的学习,我们需要书.老师-书上呢,是有所有的知识点,有重要的,有不重要的,而老师呢,会知道哪些是重点,也就是我们考试要考的,教 ...

  2. revit二次开发--异形柱翻模

    最近写了一个revit二次开发的异形柱翻模的功能,柱子翻模网上有很多插件可以用,我用的比较多的是红瓦,其中异形柱的翻模对于图纸的要求较高,有很多不准确的地方.很多异形柱,整体翻模出来是错误的,翻出来之 ...

  3. 再谈Revit二次开发的可靠性和前景

    接到一个问题咨询如下信息. Revit本身的开发规范吗?Revit发展前景如何?听说了一些Revit的身世,老担心它本身的代码就不规整.严谨,程序不够稳定,在这个平台上开始大规模二次开发有很大风险.公 ...

  4. Revit二次开发 - C#程序员的佳好选择

    虽然Revit的使用者和开发目前在中国都很少,但是这是个趋势. 未来Revit会在许多方面取代Autocad 做CAD二次开发的,在中国也很吃香. 但是使用C++难倒了许多人. 而Revit二次开发可 ...

  5. Revit二次开发_1.过滤器笔记篇

    Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...

  6. revit二次开发之教学视频

    一.背景 刚入门revit二次开发的小伙伴,很多是零基础的工程人员,为了解决这个问题,博主做了revit二次开发的一系列教学视频(包括C#基础与revit二次开发两个模块),来帮助大家更好的入门. 二 ...

  7. Revit二次开发——引用dynamo中的几何库

    前沿 dynamo的几何库其实是非常强大的,如果自己靠着RevitAPI去写还是非常费劲的.所以想引用dynamo的几何库来做一些工作.主要参考的就是这篇文章.Revit二次开发--不开启Dynamo ...

  8. revit二次开发之程序调试

    欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 需要Revit二次开发全流程教学 的朋友可以联系我qq:1056295111 一.背景 小伙伴们在rev ...

  9. revit二次开发之数据库的使用

    一.背景 小伙伴们在revit二次开发时,可能会需要与数据库做交互,那么如何实现呢? 二.思路 笔者为此录制了一个教学视频,通俗易懂,大家直接看就行了 地址:https://www.bilibili. ...

最新文章

  1. 当年轻人开始谈论AI伦理
  2. Java集合类: Set、List、Map、Queue区别及应用
  3. github bilibili
  4. Android之内存泄露、内存溢出、内存抖动分析
  5. NLP精选10个实现项目推荐-涉及预训练Bert、知识图谱、智能问答、机器翻译、对话等...
  6. POJ - 3764 The xor-longest Path(字典树性质)
  7. 微软发布自己定制的 Linux 内核和发行版,面向物联网
  8. 撸完这些JVM知识点,明天就去面试阿里P6+
  9. vue子组件触发祖先元素的执行的方法
  10. [转]在Windows server 2012上部署DPM 2012 SP1 RTM之安装配置
  11. php mysql.dll 下载_php_mysql.dll下载|
  12. Java Keytool 命令行工具
  13. C语言简明数据类型指南
  14. 【Luogu】P2634聪聪可可(树形DP)
  15. Ruby中的类与对象(一)
  16. 【视频】R语言中的分布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例
  17. 让IIS7支持SSI功能(用来支持shtml)的方法
  18. 贪心算法的几种经典例题
  19. MATLAB 50行代码绘制超好看的旋转九边形
  20. heartbeat 高可用工具

热门文章

  1. matlab包络分析函数,数据包络分析 (MATLAB代码).doc
  2. LC-3 机器语言 指令集
  3. PUBG绿色玩家 看过来!
  4. SIM卡检测信号故障分析
  5. JAVA之socket编程服务器与客户端通信--实现简易聊天室
  6. start with connect by prior的使用方法
  7. 俞渝手撕李国庆:他是同性恋,李回应:变态精神病患者!大量细节惊呆网友...
  8. 横河变送器EJA110E-JMS4J-919EA
  9. 自定义listview和ProgressBar的简单使用
  10. docker虚拟化容器技术