Re: calling SwingWorker c
To: comp.lang.java.gui
yancheng.cheok@gmail.com wrote:
hello,
i realize that when after i call SwingWorker cancel and try to wait
until the task is really canceled (through SwingWorker.get), i will
get exception as stated in http://java.sun.com/docs/books/tutorial/uiswing/concurrency/cancel.html
Note: If get is invoked on a SwingWorker object after its background
task has been cancelled, java.util.concurrent.CancellationException is
thrown.
Hence, i was wondering after the CancellationException caught, when
the time the next statement is executed, does the task is really
cancelled?
thanks
private void formWindowClosing(java.awt.event.WindowEvent evt)
{
// TODO add your handling code here:
try
{
marketTask.cancel(false);
marketTask.get();
}
catch(InterruptedException exp) {
}
catch(java.util.concurrent.ExecutionException exp)
{
}
catch(java.util.concurrent.CancellationException exp)
{
}
// So, does market Task really cancelled???
}
You will know that marketTask is canceled by checking the return value
of cancel(). Calling get() will not block. It will just throw a
CancellationException.
From the docs:
cancel
public final boolean cancel(boolean mayInterruptIfRunning)
Attempts to cancel execution of this task. This attempt will fail
if the task has already completed, has already been cancelled, or could
not be cancelled for some other reason. If successful, and this task has
not started when cancel is called, this task should never run. If the
task has already started, then the mayInterruptIfRunning parameter
determines whether the thread executing this task should be interrupted
in an attempt to stop the task.
--
Knute Johnson
email s/nospam/knute/
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24