Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [platform-swt-dev] org.eclipse.swt.SWTException: Invalid threadaccess

Try this way..


import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;

public class santest implements Runnable {

private static Display display;

private int countDown = 5;
public String toString() {
return "#" + Thread.currentThread().getName() +
": " + countDown;
}
public void test() {

// this will only use the current display
display.syncExec (new Runnable () {
public void run () {
GC gc = new GC(display);
final org.eclipse.swt.graphics.Image image = new
org.eclipse.swt.graphics.Image(display, display.getBounds());
gc.copyArea(image, 0, 0);
gc.dispose();
}
});
/* Take the screen shot */
}

public void run() {
while(true) {
System.out.println(this);
test();
if(--countDown == 0) return;
}
}
public static void main(String[] args) {

// here we create the Display in main thread
display = new Display();

for(int i = 1; i <= 5; i++)
new Thread(new santest(), "" + i).start();
// Output is like SimpleThread.java
}
}



On 8/11/06, Daniel Spiewak <djspiewak@xxxxxxxxx> wrote:
I replied before.  You have to create the Display object within the main
thread otherwise it will error out.

Daniel


On 8/11/06, Sanjay Kumar < sankumr@xxxxxxxxxxx> wrote:
>
>
> Any ideas ...any one... Apologize for the repost...
>
> >Running into this error...please help. (tried SWT FAQ solution for this
> >issue does not work..Not sure if I am doing it right though..)
> >
> >Exception in thread "5" org.eclipse.swt.SWTException : Invalid thread
access
> >at org.eclipse.swt.SWT.error(SWT.java:2942)
> >at org.eclipse.swt.SWT.error(SWT.java:2865)
> >at org.eclipse.swt.SWT.error(SWT.java:2836)
> >at org.eclipse.swt.widgets.Display.checkDisplay
(Display.java:627)
> >at
org.eclipse.swt.widgets.Display.create(Display.java:688)
> >at org.eclipse.swt.graphics.Device.<init>(Device.java:129)
> >at org.eclipse.swt.widgets.Display.<init>(Display.java :388)
> >at org.eclipse.swt.widgets.Display.<init>(Display.java:379)
> >at santest.test(santest.java:13)
> >at santest.run(santest.java:28)
> >at java.lang.Thread.run(Thread.java:595)
> >
> >I was able to reproduce the error using this simplified version of what I
> >have in my actual code
> >
> >import org.eclipse.swt.graphics.*;
> >import org.eclipse.swt.widgets.*;
> >
> >
> >public class santest implements Runnable {
> >
> >private int countDown = 5;
> >public String toString() {
> >return "#" + Thread.currentThread().getName() +
> >": " + countDown;
> >}
> >public void test() {
> >final Display display = new Display();
> >display.syncExec (new Runnable () {
> >public void run () {
> >GC gc = new GC(display);
> >final org.eclipse.swt.graphics.Image image = new
> >org.eclipse.swt.graphics.Image(display, display.getBounds());
> >gc.copyArea(image, 0, 0);
> >gc.dispose();
> >}
> >});
> >/* Take the screen shot */
> >}
> >
> >public void run() {
> >while(true) {
> >System.out.println(this);
> >test();
> >if(--countDown == 0) return;
> >}
> >}
> >public static void main(String[] args) {
> >for(int i = 1; i <= 5; i++)
> >new Thread(new santest(), "" + i).start();
> >// Output is like SimpleThread.java
> >}
> >}
> >
> >
> >_______________________________________________
> >platform-swt-dev mailing list
> >platform-swt-dev@xxxxxxxxxxx
>
>https://dev.eclipse.org/mailman/listinfo/platform-swt-dev
>
>
> _______________________________________________
> platform-swt-dev mailing list
> platform-swt-dev@xxxxxxxxxxx
>
https://dev.eclipse.org/mailman/listinfo/platform-swt-dev
>


_______________________________________________
platform-swt-dev mailing list
platform-swt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/platform-swt-dev





--
[ ]s,
felipe santos andrade
lipeandrade@xxxxxxxxx


Back to the top