下一场激发,然后激发

Atitit.swt 线程调用ui控件的方法

Atitit.swt 线程调用ui控件的办法

 

 

 

 

1 SwingUtilities.invokeLater1

1 SwingUtilities.invokeLater
1

2 display.asyncExec方法1

2 display.asyncExec方法
1

3  display.timerExec(500,timer);2

3  display.timerExec(500,timer);
2

4 、但奇迹并不一定要程序执行时就要定时检测,有时需求外部事情激发那就出现了第2种缓解方案,写一个内置类,可以放在事件监听的艺术中,然后激发:2

4 、但奇迹并不一定要程序执行时就要定时检测,有时须求外部事情激发那就应运而生了第2种缓解方案,写一个内置类,可以置身事件监听的法门中,然后激发:
2

5 参考3

5 参考
3

 

 

1   SwingUtilities.invokeLater

 

  SwingUtilities.invokeLater(new Runnable(){                        @Override                        public void run() {                            label2.setText(x + “”);                        }                    });

这些题目本身也蒙受过,有个updateUI()方法,能够缓解。

 

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://www.cnblogs.com/attilax/

 

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);  

 

 

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();  

 

 

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

5 参考

SWT中定时器的一种特殊达成形式_SWT中线程互访时display.asyncExec_display.syncExec…程序死掉无响应的解决办法 – fm2005的特辑 – 博客频道 – CSDN.NET.html



相关文章