Atitit.swt 线程调用ui控件的方法
Atitit.swt 线程调用ui控件的方法
1 SwingUtilities.invokeLater 1
2 display.asyncExec方法 1
3 display.timerExec(500,timer); 2
4 、但有时候并不一定要程序执行时就要定时检测,有时需要外部事情激发这就出现了第2种解决方案,写一个内置类,可以放在事件监听的方法中,然后激发: 2
5 参考 3
1 SwingUtilities.invokeLater
SwingUtilities.invokeLater(new Runnable(){ @Override public void run() { label2.setText(x + ""); } });
这个问题我也碰到过,有个updateUI()方法,可以解决。
2 display.asyncExec方法
用SWT提供的display.asyncExec方法,发现其实质根本不是另开一个线程,只是把run方法调用了一次,所以导致调用Thread.sleep时程序就会死掉。
有时候是另外一个线程
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
3 display.timerExec(500,timer);
1. final Runnable timer = new Runnable () {
2. int count = 0;
3. public void run () {
4. synchronized (this) {
5. try {
6. text.setText(
7. Integer.toString(count++));
8. } catch (Exception e) {
9. e.printStackTrace();
10. }
11. }
12. }
13. };
14. while (shell != null && !shell.isDisposed()) {
15.
16. if (!display.readAndDispatch())
17. display.sleep();
18. else
19. display.timerExec(500,timer);
4 、但有时候并不一定要程序执行时就要定时检测,有时需要外部事情激发这就出现了第2种解决方案,写一个内置类,可以放在事件监听的方法中,然后激发:
1. new Thread() {
2. private Runnable cmd = new Runnable() {
3. public void run() {
4. shell.setText(String.valueOf(counter++));
5. }
6. };
7. public void run() {
8. while (true) {
9. try {
10. Thread.sleep(2000);
11. } catch (InterruptedException e) {
12. return;
13. }
14. display.asyncExec(cmd);
15. }
16. }
17. }
18. .start();
5 参考
SWT中定时器的一种特殊实现方式_SWT中线程互访时display.asyncExec_display.syncExec...程序死掉无响应的解决办法 - fm2005的专栏 - 博客频道 - CSDN.NET.html
Atitit.swt 线程调用ui控件的方法相关推荐
- C#跨线程调用窗体控件的问题
前段时间遇到跨线程调用窗体控件的问题,其实一句话System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;就可以解决,但 ...
- C# Winform 跨线程更新UI控件常用方法汇总(多线程访问UI控件)
概述 C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现"线程间操作无效: 从不是创建控件的线程访问它"的异常.处理跨线程更新Winform UI控件常用 ...
- C#线程操作UI控件
在写winform程序时候,如果时间长的操作不用线程操作.那么会卡死UI,点击界面就体现为未响应.为此需要对耗时操作用线程处理,比如检验的监听程序就是一个死循环,不停检查文件夹或数据库又没有数据,然后 ...
- java 线程访问控件_C#多线程与跨线程访问界面控件的方法
本文实例讲述了C#多线程与跨线程访问界面控件的方法.分享给大家供大家参考.具体分析如下: 在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象.启用新线程去访问Web ...
- html 调用c#dll中的控件,C#调用ActiveX控件的方法
C#调用ActiveX控件时通常要进行两步操作: 第一步:注册控件,例如ABE.DLL,将ABE.DLL拷贝至系统文件夹SYSTEM32下,然后在开始中执行CMD命令,regsvr32 ABE.DLL ...
- C# WinForm跨线程访问UI控件
C# 跨线程访问控件 在做WinForm时,在UI线程之外调用控件会报异常:System.InvalidOperationException:"线程间操作无效: 从不是创建控件"l ...
- QT开发之调用其它类中的UI控件的方法
比如类A和类B, 在B中有一个QTreeWidget控件,需要在A中调用操作 先在A中声明一个 QTreeWidget *tree; 然后在B中声明一个类A的指针 A *a; a->tree = ...
- C#【委托/事件篇】跨线程访问窗体控件的方法
文章目录 一.直接调用方法,方法中使用委托[textBox1.InvokeRequired] 二.调用委托,委托进一步关联方法 1.使用委托[最基础的调用方法:委托五步法] 2.使用Action作为委 ...
- 快速创建UI控件的 方法 ,值得总结1
在平常写代码的时候相信大家 都会为每次创建 button或者其他的系统控件的 那么多行代码而烦恼 ,那么怎么能有个简单的方法来快速创建一个button呢.废话不多说,直接进入主题! 1.第一种方法 ...
- c#如何跨线程调用窗体控件
public partial class Form1 : Form { public Form1() { InitializeCompo ...
最新文章
- php设置低于设定值不能用,php memory limit怎么设置不限制
- 鼠标终将消失,未来我们有哪些人机交互方式?
- C#学习日志 day 5 plus------ interface 数组及stringBuilder相关
- 云上建站快速入门:博客、论坛、CMS、电子商务网站统统搞定
- Android 屏幕旋转时Activity的变化
- 【MRCTF—Web】做题+复现记录
- 【机器学习】岭回归(L2正则在干嘛!)
- TypeScript class 的静态成员变量
- BootStrap 用法
- idea使用过程中的坑
- linux 执行程序时,提示not found问题分析
- 2020年阿里云服务器租用价格表(实时更新)
- @RequestParam使用
- html 网页不可以复制粘贴,网页上的文字不能复制,三种方法教你复制全网文字...
- 邓俊辉 数据结构 图
- [Android 9][markw] 红米4高配版 刷入Lineage OS 16与OpenGApps
- 书摘—拆掉思维里的墙
- 0402/0603/0805/1206封装尺寸
- Wannafly挑战赛20 A 染色(暴力/思维)
- 工作站和台式机的区别是什么