[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [platform-swt-dev] Working with different threads in SWT
|
Vielen Dank!
-----Original Message-----
From: platform-swt-dev-bounces@xxxxxxxxxxx
[mailto:platform-swt-dev-bounces@xxxxxxxxxxx] On Behalf Of Tom Schindl
Sent: Sunday, March 25, 2007 10:54 PM
To: Eclipse Platform SWT component developers list.
Subject: Re: [platform-swt-dev] Working with different threads in SWT
Hi,
you should have posted this kind of question to the the swt newsgroup
(http://www.eclipse.org/newsgroups/). This mailing list is not for user
questions but for internal communication of developers. I'll answer your
question now here but please use the newsgroup for this kind of question.
Your problem is that you are executing the threads in the Runnable which
is simply wrong. Normally your code looks like the following:
public class Rotate {
public void static rotate( final Image image, final Composite comp) {
final Display d = comp.getDisplay();
Thread t = new Thread() {
public void run() {
for (int i = 0 ; i <= rect.width / 2 ; i++) {
d.syncExec(new Runnable() {
public void run() {
comp.setBounds(
rect.x + i,
rect.y ,
rect.width - i*2,
rect.height)
}
});
Thread.sleep(1);
}
// ...
}
};
t.start();
}
}
The key point is that you only sync the calls you make to SWT-Components
because the Disply#syncExec takes care that those parts of code are
executed in the SWT-Event Thread. You never ever start new threads
inside a runnable you pass to syncExec/asyncExec.
Tom
Roman Kournjaev schrieb:
> Hi Tom
>
> I am sorry for bothering you with my questions , but i simply don't
> understand where do i post the code , i got to this link
> http://dev.eclipse.org/newslists/news.eclipse.platform.swt/maillist.html
> , i searched a little through the site but there is not such options as
> post , or open theme. Regarding the question the thread spawning is done
> in the main thread , here is the runnable class , which is launched
> asynchrony.
>
>
> import org.eclipse.swt.graphics.Image;
> import org.eclipse.swt.graphics.Rectangle;
> import org.eclipse.swt.widgets.Composite;
>
> class Rotate implements Runnable
> {
> private Image image;
> private Composite comp;
>
> public Rotate(Image image, Composite comp) {
> this.image = image;
> this.comp = comp;
> }
> public void run()
> {
> Rectangle rect = comp.getBounds();
> try{
> for (int i = 0 ; i <= rect.width / 2 ; i++)
> {
> comp.setBounds(rect.x + i, rect.y , rect.width - i*2 ,
> rect.height);
> Thread.sleep(1);
>
> }
> for (int i = rect.width / 2 - 1 ; i >= 0 ; i--)
> {
> comp.setBounds(rect.x + i , rect.y , rect.width - i*2 ,
> rect.height);
> Thread.sleep (1);
> }
> }
> catch (InterruptedException e)
> {
> e.printStackTrace();
> }
> comp.setBackgroundImage(image);
> }
>
> }
>
> Sie konnen mir auch auf Deutsch antworten.
> Vielen Dank im Vorraus!
>
> Roman
>
> On 3/25/07, *Tom Schindl* <tom.schindl@xxxxxxxxxxxxxxx
> <mailto:tom.schindl@xxxxxxxxxxxxxxx>> wrote:
>
> Hi,
>
> Please post the code you are running and the question to the
> platform.swt newsgroup. I suppose you are doing all the thread
spawing,
> ... in the runnable which is simply wrong. You should the only lines
of
> code you should run in the Runnable are the calls to the
SWT-Functions.
>
> Tom
>
> Roman Kournjaev schrieb:
> > Hello
> >
> > I have some synchronization problem , I would very appreciate it
> if one
> > of you could help me out.
> >
> > I have a class that implements Runnable interface , this class is
> doing
> > some manipulations(for instance setBounds) on a Comosite object
> from SWT
> > , that is connected to some Shell. I am starting two such Threads
> with
> > the Display.getDefault().asyncExec(runnalbe) function (every
Threads
> > gets a different Composite object) , but The threads are not
> executed in
> > an asynchrony way , the first thread is waiting for the other to
die
> > and only then it starts its actual execution. (sleeping and
yielding
> > inside the thread didn't help).
> >
> > Thanks in advance for your help
> >
> > Roman
> >
> >
> >
>
------------------------------------------------------------------------
> >
> > _______________________________________________
> > platform-swt-dev mailing list
> > platform-swt-dev@xxxxxxxxxxx <mailto:platform-swt-dev@xxxxxxxxxxx>
> > https://dev.eclipse.org/mailman/listinfo/platform-swt-dev
>
> _______________________________________________
> platform-swt-dev mailing list
> platform-swt-dev@xxxxxxxxxxx <mailto: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