gpt4 book ai didi

java - 时间密集型计算和 SWT

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:43 26 4
gpt4 key购买 nike

Swing 中,我创建了 SwingWorkers 或使用 invokeLater 进行时间密集型计算,而不会干扰 Swings GUI 线程。如何在 SWT 中做到这一点?我正在使用 Callable 和 Future 编写代码,但我认为这不会削减它:

class MyClass extends ViewPart { 

.
.
.
@Override
public void createPartControl(final Composite arg0) {
this.runScenarioItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
final ScenarioDialog scenarioDialog = new ScenarioDialog(arg0.getShell(), SWT.DIALOG_TRIM
| SWT.APPLICATION_MODAL);
final Scenario scenario = scenarioDialog.open();
if (suvConnection.isConnected()) {
runScenarioItem.setEnabled(false);
try {
final ScenarioRunner runner = new ScenarioRunner(suvConnection, scenario);
final ExecutorService executor = new ScheduledThreadPoolExecutor(1);
final Future<Integer> future = executor.submit(runner);
System.out.println("result of callable = " + future.get());
runScenarioItem.setEnabled(true);

}
catch (final Exception e1) {
e1.printStackTrace();
}
}
}
});
}
}

编辑:

我正在尝试将以下代码片段添加到我的密集计算类中:

            final Display display = this.shell.getDisplay();
display.asyncExec(new Runnable() {
public void run() {
if (!display.isDisposed()) {
display.readAndDispatch();
}
}
});

当我有更多信息时,我会更新。伙计,我想念 Swing...

最佳答案

首先,您应该避免问题中的主观印象,它们无助于回答问题,其次,有关如何从另一个线程访问小部件的片段,请参见 here ,为什么这是必要的,请参阅 here如果您将 SWT 与 Eclipse RCP 框架结合使用,您应该考虑在 Eclipse Jobs 中处理长时间运行的进程.

关于java - 时间密集型计算和 SWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9781468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com