I hava a class (Sync) that extends Thread. I have opened a SocketConnection, connect to a server, make some data synchronization. During the sync process I would like to stop the synchronization (close the connection) from the main thread. I tried diferent ways to solve the problem:
1) I tried with Dialog.ask(....)...but it is modal and the process of synchronization is stopped while the system is waiting for my answer.
2) I made my own "Cancel" button to stop the sync process, but it looks like the main thread is sleeping or something like that (i could not move the focus to that button)
3) I use the back key, but it works after the sync process.
Here is a part of my code:
Code:
private void sync() {
Sync sync = null;
prog = new ProgressStatus();
synchronized (prog) {
if (!isRunning) {
isRunning = true;
isCancelled = false;
sync = new Sync(prog, dataBase, isCancelled, dataLimit, isRunning);
sync.start();
isRunning = sync.getIsRunning();
}
}
while (isRunning) {
Backlight.enable(true, 200);
Status.show("synchronizing...");
try {
Thread.sleep(100L);
} catch (InterruptedException exception) {
Dialog.alert("Exception: " + exception);
}
synchronized (prog) {
isRunning = sync.getIsRunning();
}
}
}