0

我正在实现一个带有取消按钮的搜索对话框。当用户开始搜索时,结果将从数据库中一个一个填充到 TableViewer 中,并在进度条中显示进度。

假设用户想取消搜索,他会点击取消按钮。

如何停止数据填充过程?

SearchProgressBar dlg=new  SearchProgressBar(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
dlg.open();
for(int i=0;i<result.length;i++) {
String str=FillGistTable(result[i].toString().split("\\~"),i);
COUNT++;
}
dlg.close()
4

1 回答 1

1

一种方法是使用IProgressService

IProgressService service = PlatformUI.getWorkbench().getProgressService();
service.busyCursorWhile(runnableWithProgress);

runnableWithProgess是一个实现的类IRunnableWithProgress,您可以在其中放置循环。您将通过IProgressMonitor- 检查isCanceled()方法来检查取消。

如果您的循环快速完成,则不会显示对话框,但如果需要更长的时间,则会显示带有取消的进度对话框。

注意:IProgressService在纯“e4”Eclipse 4 应用程序中不可用。

于 2013-09-20T12:44:51.050 回答