Try changing this
Thread t = new Thread( new ThreadStart(delegate()
{
DoPTACalculations(e, PTACalculationEnd);
}));
t.Start();
to this
DoPTACalculations(e, PTACalculationEnd);
In the sample you show you do not have any mechanism for the page to determine when your thread has completed. I imagine that the server sends the response before your thread has finished.
Edit:
Per your comment, if you require long processing thread to handle this then you need to manage the threads so the response does not end before you are done trying to modify the output. I suggested that just so you would be able to see that it is not showing the changes you expected because the server sends the page response while your threads are still executing. I would imaging that when your page reloads after triggering the ItemCommand your button's text says "Calculating..." and is disabled. Once the response is sent back to the client there is no way for the thread to send out the changes it trys to make.
Here are some links you should check out
Multi-Threading in ASP.NET[
^]
Use the Asynchronous Power of ASP.NET to Create a Simple, Reusable Page for Displaying a Processing Message[
^]