I already use a thread
dim theDiagnoser as new DiagnoseThread(theDatabase, Silent)
while not DiagnoseFinished or theDiagnoser.State = Thread.Running
and in the thread
if theDatabase.Diagnose(VerboseLevel, theDiagnoseFile) then
'database is okay
NotificationManager.Post "DiagnoseFinished", "Success"
'and so on
Any not responding makes users who may not be very experienced with computers force-quit my app.
Xojo 2017r1, El Capitan/High Sierra. Valentina 7.5.6.