gpt4 book ai didi

swt - eclipse rcp : how to block ui while running a job in background

转载 作者:行者123 更新时间:2023-12-04 06:20:21 24 4
gpt4 key购买 nike

我在对话框中有一个测试按钮,当用户单击该按钮时,我的应用程序将尝试通过 JDBC 连接到数据库。对于某些测试用例,此作业需要很长时间才能响应用户,例如网络连接超时。我通过将一个监听器附加到该按钮并连接到该监听器中的数据库来做到这一点。连接时,直到连接作业完成,用户界面才会响应。连接时发生的任何用户操作将在连接工作完成后生效。例如:该对话框中还有另一个“取消”按钮,单击此按钮将关闭该对话框。如果在连接作业运行时单击“取消”按钮,则在连接作业完成之前对话框不会关闭!

我希望在我的连接作业运行时发生的用户操作将 被丢弃 ,不保存,稍后生效。

我在 Windows 7 上使用 eclipse indigo

我的问题应该是:如何忽略在后台运行作业时发生的任何用户操作。

最佳答案

到目前为止,我发现在作业在后台运行时忽略任何用户操作的两种方法:

第一个是操作开始前调用shell.setEnabled(false),操作完成后调用shell.setEnabled(true)
(可选)结合 BusyIndicator 给用户一些反馈。

第二个是使用没有按钮的模式对话框,因此用户无法关闭它(样式例如 SWT.APPLICATION_MODAL | SWT.SHEET | SWT.NO_TRIM )。该对话框包含一个标签,例如 "Loading ..."或 ProgressBar 。使用 RCP 时,ProgressMonitorDialog 是一个选项。

就我而言,我不想使用第二种解决方案,因为我不知道后台作业运行了多长时间。如果作业很短,我想避免在 ProgressMonitorDialog 快速连续打开和关闭时出现一些闪烁。

@screentiger.com 我没有在您分享的文章中看到您在后台运行作业时如何忽略任何用户操作。
如果您能更具体一些并给出代码示例,我将不胜感激。

关于swt - eclipse rcp : how to block ui while running a job in background,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6660574/

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