JFace中的长时操作long-running operation
为了UI的良好响应, 长时操作一般放到非UI线程的其它线程中执行.
eclipse中UI通常提供一个progress indicator来指示当前完成进度, 并且提供一个cancel按钮可以取消长时操作.
JFace中引入了接口IRunnableContext和IRunnableWithProgress来配合完成这个任务.
IRunnableContext通常由发起long-running operation的widget实现, 例如ProgressMonitorDialog, 负责发起长时操作, 并向IRunnableWithProgress注入IProgressMonitor实例.
IRunnableWithProgress负责在非UI线程中执行长时操作,并使用被注入的IProgressMonitor进行进度报告和检查cancel请求.
跨线程的通讯由实例化的IProgressMonitor承担.
一花一世界 2021/7/13