java - 如何在 RCP 应用程序/SWT 中实现超时

标签 java timeout swt eclipse-rcp rcp

如果工作台空闲一段时间,我想“注销”或“关闭”应用程序 时间量(30分钟等),但我还不知道如何实现。有人有什么建议吗?

最佳答案

我有一个类似的要求,我绞尽脑汁去实现它。

要求:

Lock the Application Window, if idle for some pre-configured amount of time.

但是,我的是一个纯 SWT 应用程序,我可以完全控制 CreateDispose Shell

PFB 是我的代码的摘录,有详细的文档记录,它可能会对您有所帮助或为您提供见解。

    //Boilerplate code for SWT Shell
   //Event loop modified in our case
   boolean readAndDispatch;
        while (!shell.isDisposed()) { //UI Thread continuously loop in Processing and waiting for Events until shell is disposed.
            try {
                readAndDispatch = shell.getDisplay().readAndDispatch(); // reads an Event and dispatches, also returns true if there is some work else false.
                if (!readAndDispatch) { //There is no work to do, means, System is idle
                    timer.schedule(worker, delay); // So, schedule a Timer which triggers some work(lock or logout code) after specified time(delay)
                    shell.getDisplay().sleep(); 
                } else{
                    timer.reschedule(delay); //This means System is not idle. So, reset your Timer
                }
            } catch (Throwable e) {
                log.error(ExceptionUtils.getStackTrace(e));
                MessageDialog.openError(shell, "Error !!", ExceptionUtils.getRootCauseMessage(e));

            }
        }

注意

我有一个 java.util.Timer 的自定义实现,通过取消现有的 TimerTask 来提供重新安排功能,创建一个新的 Timertask然后再次安排。

关于java - 如何在 RCP 应用程序/SWT 中实现超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375343/

相关文章:

java - 我是在改变一个对象还是该对象的副本?

JavaFX : Unable to populate the integer value in Table column

java - 如何制作一个接受任何类型变量的 Java 函数?

java - 当 session 超时重定向到 GWT 项目中的登录页面时

java - Java VM EXCEPTION_ACCESS_VIOLATION 的可能原因?

java - 在 SWT 中禁用窗口调整大小 - 使用复合

java - 如何将应用程序使用统计信息存储在文本文件中?

c# - 如何更改表适配器的命令超时

networking - 如何在 Windows Phone 8 模拟器上测试网络超时异常

java - SWT:如何在标签中开始新行?