Maybe you didn't see the replies to his post but it is strongly recommanded not to use TerminateThread.
A better approach would be to pass a pointer to your dialog class to the thread function, and within the thread cast it back to your dialog and call a public function on it. Inside that function you put the code you already provided except that in your loop, you also check if a flag is set or not (this flag is a simple bool which is a member of the dialog). If the flag is set, you simply stop the loop and the function terminates.
When you click on the end button, you can simply set this flag so that the loop stops.