> 'iwantToStopmyProgram'.
> variable, you could also interrupt a thread, notify a waiting thread, etc.
> So I think you don't need a timeout.
You have completely right. I simplified the code as :
the waiting thread is interupted clicking on a button.
But it is still unclear to me what exactly you want to do.
> interrupted (simply abort processing in that case).
streaming which is triggered. I don't understand " if you have an
appreciate.
Anyway I am very grateful for these exchanges which allowed me to progress.
> Hi Philippe,
>
> it seems to me that there must be an event that sets your variable
> 'iwantToStopmyProgram'.
> In the code that sets 'iwantToStopmyProgram', instead of setting the
> variable, you could also interrupt a thread, notify a waiting thread, etc.
>
> So I think you don't need a timeout.
>
> But it is still unclear to me what exactly you want to do.
>
> Is it previewing the result of processing?
> ImageJ has all the infrastructure for previewing if you have an
> ExtendedPlugInFilter with a GenericDialog; you need not care about anything
> except for checking from time to time whether the processing thread was
> interrupted (simply abort processing in that case).
>
> Michael
> ________________________________________________________________
> On Feb 28, 2014, at 17:53, Philippe GENDRE wrote:
>
> > Dear Michael,
> >
> > Thank you for your very didactic and efficient answer.
> >
> > According to do exactly what I want : to stop the program at any time by
> > user interaction (when the image is updated or not) and to avoid image
> > processing on not updated image after each timeout, I adapted the code
> like
> > this :
> >
> > img.addImageListener(this);
> > waitingThread = Thread.currentThread();
> >
> > do {
> >
> > doUpdate=false;
> > synchronized(this){
> > while (doUpdate==false){
> > try {
> > wait(1000);
> > if (iwantToStopmyProgram==true) break;
> > }
> > catch(InterruptedException e) {
> > continue;
> > }
> > }
> > }
> >
> > //image processing on updated image
> >
> > }while (iwantToStopmyProgram==false)
> >
> > public synchronized void imageUpdated(ImagePlus img) {
> > if (img == this.img && waitingThread != null){
> > waitingThread.interrupt();
> > doUpdate=true;
> > }
> > }
> >
> > Best regards,
> >
> > Philippe
> >
> >
> >
> > 2014-02-28 15:35 GMT+01:00 Michael Schmid <
[hidden email]>:
> >
> >>> I would like to exit from a synchronized while (image not updated)
> >>> wait() (until the image is updated) loop when the image is not updated.
> >>
> >> Hi Philippe,
> >>
> >> it seems that you need some timeout, otherwise you can't know whether an
> >> update is still to come. Maybe roughly like this:
> >>
> >> //class variables ('global')
> >> ImagePlus theImageIamWaitingFor;
> >> Thread waitingThread;
> >>
> >> public void imageUpdated(ImagePlus imp) {
> >> if (imp == theImageIamWaitingFor && waitingThread != null)
> >> waitingThread.interrupt();
> >> }
> >>
> >> //main processing code
> >> ...
> >> waitingThread = Thread.currentThread();
> >> theImageIamWaitingFor = ...
> >> while (true) { //might be also while (!closed) etc.
> >> //do some analysis on updated image
> >> synchronized(this) {
> >> //wait for image update, but no longer than 1000 millesec:
> >> try {
> >> wait(1000);
> >> } catch (InterruptedException e) {
> >> continue; //loop again after update
> >> }
> >> break; //timeout, leave the while loop
> >> }
> >> }
> >>
> >> Michael
> >> ________________________________________________________________
> >> On Feb 28, 2014, at 14:05, Philippe GENDRE wrote:
> >>
> >>> Dear List,
> >>>
> >>> I would like to exit from a synchronized while (image not updated)
> >> wait()
> >>> (until the image is updated) loop when the image is not updated.
> >>>
> >>> Is it possible and how to ?
> >>>
> >>> Thanks.
> >>>
> >>> Philippe
> >>>
> >>> --
> >>> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html> >>
> >> --
> >> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html> >>
> >
> > --
> > ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>