Seems that you need an ProcessSystemEvents () call inside your while loop. By means of this function, updates in the user interface (i.e. button pressing and so on) are processed inside the function. If this function is not present, all changes in the user interface are ignored.
You can arrange your panel to show only a 'Stop acquisition' button, always active. When pressed, the corresponding callback is triggered, into which you can raise a flag to inform the acquisition process it has to stop when ready and safe. When the process stops, you can enable all the commands and buttons you need to configure the new acquisition and then use a Go button to start the while loop again.
Roberto