我有一个配置串行端口连接的摇摆工作人员。这个过程需要一个无法确定的时间来完成,有时需要 1 分钟,有时更多。
当用户在工作线程仍在配置时单击需要配置数据的按钮时,就会出现我的问题。
我想知道只有在工作线程完成后如何执行用户的请求。否则,如果工作线程仍然存在,我希望执行等到工作线程完成。
我有一个配置串行端口连接的摇摆工作人员。这个过程需要一个无法确定的时间来完成,有时需要 1 分钟,有时更多。
当用户在工作线程仍在配置时单击需要配置数据的按钮时,就会出现我的问题。
我想知道只有在工作线程完成后如何执行用户的请求。否则,如果工作线程仍然存在,我希望执行等到工作线程完成。
添加PropertyChangeListener
到SwingWorker
,然后您可以从SwingWorker
必须get()
在SwingWorker
's 方法done()
中实现,否则无法从调用的方法中获取异常
取决于代码,但我怀疑是否可以更改设置,直到当前线程结束,最好是SwingWorker#cancel()
然后重新启动此实例
ActionEvent
如果task.isDone()
-任务在哪里 -你可以检查你的按钮,SwingWorker
并且只有在它是真的时才继续。但是您可能想显示一个弹出窗口或其他东西,否则用户可能会感到困惑,为什么什么都没有发生。
另一个简单的解决方案是在任务运行时公开按钮并禁用它,并在完成时再次启用它。然后用户在它准备好之前不能点击按钮。