SWT obciążenie procesora 100%

0

Mam poważny problem z SWT. Piszę sobie w SWT, przynajmniej próbuję aż tu pewnego czasu takie coś. Obciążenie procesora 100%. Wyłączyłem w projekcie wszystko co było możliwe, a nawet więcej - stworzyłem nowy projekt kod poniżej i .... Jeżeli tylko najdę na formę to mam zajętość procesora 100%, jeżeli przesunę formę w inne miejsce i zabiorę z niej myszkę wszystko wraca do normy. Ponowne najechanie na formę znowu 100%.
Myślałem że wysypało mi sie całkiem SWT, ale mój drugi projekt działa bez zarzutu.
Teraz jeszcze przyszło mi na myśl ze może SWT nigdy mi nie działało dobrze na tym komputerze, zazwyczaj nie monitorowałem zużycia procesora, a ten projekt co mi działa to pisałem go na innym komputerze, na ten tylko go przeniosłem.
Proszę o pomoc, każda sugestia mile widziana :)

import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.*;
//import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;


public class test {

	/**
	 * @param args
	 */
	public static Shell frmWindow;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Display display = new Display();
		frmWindow = new Shell(display);
		frmWindow.setText("Testowo");
		
		GridLayout layout = new GridLayout(); 
		frmWindow.setLayout(layout);
		
		frmWindow.open();
		
		
		
		while (!frmWindow.isDisposed()){
			if (display.readAndDispatch()){
				display.sleep();
			}
		}
		display.dispose();
	}

}
</cpp>
0

podejrzewam, ze to ten <font size="4">while</span> tak obciaza procka

pozdro

0

Zamiast while zrób threada z interwałem 1000, albo mniejszym.

0

Z jednaj storny to while tak obciaza ale w drugim programie jest dokladnie tak sami i wszystko jest ok, wiec przyczyny szukam gdzie indziej.

Popatrzyłem jeszcze raz na while i [glowa] młotek ze mnie. Wkradł się błąd mały ale zawsze prawidłowy kod wygląda tak:

public class test {

	/**
	 * @param args
	 */
	public static Shell frmWindow;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Display display = new Display();
		frmWindow = new Shell(display);
		frmWindow.setText("Testowo");
		
		GridLayout layout = new GridLayout(); 
		frmWindow.setLayout(layout);
		
		frmWindow.open();
		
		
		
		while (!frmWindow.isDisposed())
			if (!display.readAndDispatch())
				display.sleep();
		
		display.dispose();
	}

}

Różnica niewielka ale jest, przy ostatnim warunku jest

if (display.readAndDispatch())

a powinno być if (!display.readAndDispatch())

.
Wystarczyło się przespać z problemem, ale tak czy inaczej dziekuję wszystkim za zainteresowanie.
Temat uważam za zamknięty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1