在多线程组件的任务内部访问 DataAccess 进行输出有空值

如图所示为自己编写的多线程 grasshopper 组件,代码实现是简单的 a + b,在多线程的任务内使用 IGH_DataAccess 分别对输出端的 ab 和计算结果进行了赋值。
该线程只执行了一次,但是在测试的 gh 文档中可以看到两个输出。其中猜测是多线程导致其产生了额外的空值输出。

请问有没有办法在代码中阻止空值的输出,即不需要额外附加电池去掉 null 项?

需要检查代码的逻辑,搞清楚 null 是怎么产生的,才能从根本上解决问题。

不知道 GH_TaskCapableComponent 这个类内具体实现,一般用户好像没有办法看到 Grasshopper.Kernel 源码?

Grasshopper 的代码没有加密的,用 dnspy 就能看到源码了。

感谢这个小工具,我似乎解决了。

原来用输出端数据类型是 Item ,在子线程输出的时候,会先遇到主线程默认给设定 null,子线程好像没法覆盖这个值。
我粗暴地把数据类型改成了 Tree ,貌似这样修改后子线程就可以覆盖树路径了。

所以还是逻辑上的问题,输出 null 本身就不对,可以参考现有的几个多线程的电池源码,看看现有的是怎么做的。

业务需求要子线程输出,不是逻辑问题。