RCP 非UI线程调用UI操作
2011-09-05 21:42
239 查看
如果刷新,定时等等需要操作的话 ,一般会另外起线程做监视,然后在返回对UI做操作。RCP中对UI的操作只能由UI线程进行,这时需要从非UI线程切换到UI线程进行操作。
//定时刷新线程
class RefreshThread extends Thread ...{
@Override
public void run() ...{
// 定时
long time = 0;
int intervalTime = 10; // 定义间隔时间
while (true) ...{
if (System.currentTimeMillis() - time > intervalTime * 1000) ...{
time = System.currentTimeMillis();
// 自定义线程启用同步UI主线程完成控件内容操作
Display.getDefault().syncExec(new Runnable() ...{
public void run() ...{
RefreshAction.getInstance().run();
}
});
}
}
}
}
//定时刷新线程
class RefreshThread extends Thread ...{
@Override
public void run() ...{
// 定时
long time = 0;
int intervalTime = 10; // 定义间隔时间
while (true) ...{
if (System.currentTimeMillis() - time > intervalTime * 1000) ...{
time = System.currentTimeMillis();
// 自定义线程启用同步UI主线程完成控件内容操作
Display.getDefault().syncExec(new Runnable() ...{
public void run() ...{
RefreshAction.getInstance().run();
}
});
}
}
}
}
相关文章推荐
- RCP 非UI线程调用UI操作
- wpf调用外部线程操作ui方法
- UI多线程调用:线程间操作无效: 从不是创建控件"Form1"的线程访问它.
- c#非委托方式在子线程里操作UI控件(实际上运算逻辑在子线程,更新还是在主线程,解决了UI界面无响应的问题)
- 千万别在UI线程上调用Control.Invoke和Control.BeginInvoke,因为这些是依然阻塞UI线程的,造成界面的假死
- 在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。(以解决)
- android UI跨线程操作
- !!c# 委托与多线程 -- 相比background来说,本方法针对当需要通过异步代理发起UI操作,而后线程中进行sleep操作的时使用
- UI方法调用顺序和UI常用操作
- 如何监控项目里所有UI线程的操作(实战,BlockCanary)?
- swt在其它线程中调用界面控件的操作
- 为什么说android UI操作不是线程安全的 分类: Android 2014-09-23 21:08 1357人阅读 评论(0) 收藏 举报 目录(?)[+] 可能在非UI线程中刷新界面的时候,U
- [WinForm]WinForm跨线程UI操作常用控件类大全
- 非UI线程可以去刷新UI吗(timertask调用progressbar的setProgress的特例)
- Qt线程QThread简析(8个线程等级,在UI线程里可调用thread->wait()等待线程结束,exit()可直接退出线程,setStackSize设置线程堆栈,首次见到Qt::HANDLE,QThreadData和QThreadPrivate)
- C# 跨线程操作UI(界面)
- 为什么Android的UI操作是线程不安全的
- C#线程相关问题总结:基本操作及UI控件交互
- C#在非UI线程调用UI线程的控件
- winform 利用 多线程 处理窗体假死,利用 Invoke BeginInvoke 处理子线程调用 UI 控件报错的问题