I am currently writing a wxWidgets application as a tool to perform a task. This task is asynchronous and occurs in a different thread. I pop up a dialog box & disable the main window when the task starts with a description label and progress bar to indicate task progress. Below the progress bar is a "Abort" button that the user can press to stop the task. For some tasks, this progress box disappears automatically when the task is done.
My main concern is that certain tasks might require the user to be aware that the task has finished. In my mind, I would approach this by keeping the progress dialog box open when the task is complete with a completion description and a 100% progress bar. This would leave the "Abort" button in a useless spot, and no way for the user to close the progress dialog without hitting the title bar's close window button which is not accessible by keyboard. Would it make sense to change the label on the abort button to "Dismiss" once the task is completed, or would changing the button label confuse the user? Should I have two buttons?