We've solved the problem of the program freezing up, but now we have some new problems. The most obvious problem is that our callback immediately shows a message box claiming that we've successfully uploaded the file, even though the process is still ongoing in the background. A subtler and far worse problem is that we aren't alerted to errors. If you try running the callback without the test service running, it will still immediately claim that the upload succeeded, even though you can see on the terminal that exceptions are being raised. What's going on here?
The root problem here is that the Thread.start() method doesn't block, nor does it pass on exceptions caused in the thread's run() method. Those exceptions are raised within the new thread, and can only be caught in the new thread. As far as our main thread...