我在对话框中有一个测试按钮,当用户单击该按钮时,我的应用程序将尝试通过 JDBC 连接到数据库。
对于某些测试用例,此作业将需要很长时间才能响应用户,例如网络连接超时。我通过将侦听器附加到该按钮并连接到该侦听器中的数据库来完成此操作。连接时,直到连接作业完成后,用户界面才会响应。连接时发生的任何用户操作将在连接作业完成后生效。
例如:该对话框中还有一个“取消”按钮,单击该按钮将关闭该对话框。如果在连接作业运行时单击“取消”按钮,则在连接作业完成之前该对话框不会关闭!
我希望我的连接作业运行时发生的用户操作将被丢弃,不存储并稍后生效。
我在 Windows 7 上使用 Eclipse Indigo
我的问题应该是这样的:
如何忽略在后台运行作业时发生的任何用户操作。
到目前为止,我发现当作业在后台运行时忽略任何用户操作的两种方法:
第一个是调用shell.setEnabled(false)
在操作开始之前和shell.setEnabled(true)
手术完成后。
(可选)与BusyIndicator
给用户一些反馈。
第二个是使用没有按钮的模式对话框,因此用户无法关闭它(样式例如SWT.APPLICATION_MODAL | SWT.SHEET | SWT.NO_TRIM
)。该对话框包含一个标签,例如“正在加载...”或ProgressBar
。使用 RCP 时ProgressMonitorDialog
是一个选项。
就我而言,我不想使用第二个解决方案,因为我不知道后台作业运行多长时间。如果工作很短,我想避免当 ProgressMonitorDialog 快速连续打开和关闭时出现一些闪烁。
@screentiger.com 我没有在您分享的文章中看到如何在作业在后台运行时忽略任何用户操作。
如果您能更具体并给出代码示例,我将不胜感激。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)