gpt4 book ai didi

java - ProgressMonitorDialog 和用户交互

转载 作者:行者123 更新时间:2023-12-01 12:29:02 27 4
gpt4 key购买 nike

我使用 ProgressMonitorDialogIRunnableWithProgress 在后台读取文件。

如果在此文件处理过程中发生错误(数据不是我所期望的),我想询问用户是否要继续下一行。

现在的问题是,为了询问用户是否要继续,我必须显示一个对话框。从非 UI 线程显示对话框涉及使用 Display.asyncExec() 或 Display.syncExec()。为了将结果(用户决定)返回到后台线程,我必须使用回调。

现在的问题是,当我在后台线程的回调中得到结果时,如何继续读取文件?或者,换句话说,如何暂停后台线程的执行,直到反馈返回然后继续执行?

我愿意接受建议,并愿意重组我的环境以适应这种行为。

最佳答案

Dislay.syncExec 会阻止您调用它的线程,以便您可以执行以下操作:

final int[] result = new int[] {0};

display.syncExec(new Runnable() {
public void run() {
Shell shell = display.getActiveShell();

MessageDialog dialog = .... your message dialog

result[0] = dialog.open();
}
});

... dialog return code in result[0]

(大量改编自 org.eclipse.equinox.internal.p2.ui.ValidationDialogServiceUI 中的代码)

关于java - ProgressMonitorDialog 和用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26101023/

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