Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如何在不同的领域使用IObservable?_Multithreading_Data Binding_Eclipse Plugin_Eclipse Databinding - Fatal编程技术网

Multithreading 如何在不同的领域使用IObservable?

Multithreading 如何在不同的领域使用IObservable?,multithreading,data-binding,eclipse-plugin,eclipse-databinding,Multithreading,Data Binding,Eclipse Plugin,Eclipse Databinding,我在SWT范围内有可观测的x和y。我想使用它们的值来计算iobservablelistz的内容。计算无法在UI线程中完成,因此我必须编写: 班级电脑{ 专用最终IObservableSet x; 私人最终IOBServable列表y; 私有最终可写列表z=新可写列表; 计算机IOBServableSet x,IObservableList y{ 这个.x=x; 这个。y=y; x、 AddSetChangeListener新建ISetChangeListener{ public void han

我在SWT范围内有可观测的x和y。我想使用它们的值来计算iobservablelistz的内容。计算无法在UI线程中完成,因此我必须编写:

班级电脑{ 专用最终IObservableSet x; 私人最终IOBServable列表y; 私有最终可写列表z=新可写列表; 计算机IOBServableSet x,IObservableList y{ 这个.x=x; 这个。y=y; x、 AddSetChangeListener新建ISetChangeListener{ public void handleSetChangeSetChangeEvent事件{ 使现代化 } }; y、 AddSetChangeListener新建IListChangeListener{ 公共无效handleListChangeListChangeEvent事件{ 使现代化 } }; } 无效更新{ 设置扩展数据=新的HashSetx; List yData=新哈希列表; //计算将在不同的线程和特殊上下文中进行 Model.getTransactionManager.AsyncExecuteNew Runnable{ 无效运行{ 列表zData=numberCruncherxData,yData; //无法直接分配给SWT reaml z、 getRealm.AsyncExecuteNew可运行{ 无效运行{ z、 清晰; z、 addAllzData; } }; } }; } } 这气味太难闻了,我都喘不过气来。数据绑定的概念完全隐藏在一个单独的线程方法中

我曾考虑过使用ComputedSet for z,并使用适当的asyncExec将其与自定义域一起使用,但没有简单的方法从中访问x和y值。x和y可以绑定到自定义域中的代理,但这会重复内存使用,并且可能会用额外的事件处理污染模型线程

有没有一种聪明的方法可以从自定义领域获取x和y的值,从而计算z的可观测值