Это вообще невозможно.Обратный вызов выполняется в потоке потоков, вы не можете размахивать волшебным флагом и спрашивать «не стреляйте, пожалуйста».Даже если бы это было возможно, это неизбежное состояние гонки, поток, возможно, уже был запущен, но еще не получил возможности выполнить.
Все, что вы можете сделать, это заблокировать поток, использовать критический раздел илимьютекс в вашем обратном вызове.Получение мьютекса, когда ваш поток пользовательского интерфейса «не занят», довольно непрактично, вам придется делать это в цикле сообщений.В общем, вы хотите защитить только общее состояние, переменные, к которым обращаются как в потоке пользовательского интерфейса, так и в вашем обратном вызове.
Если вы рассматриваете это, потому что не хотите, чтобы обратный вызов потреблял циклы ЦП во время вашего пользовательского интерфейсаПоток занят, имейте в виду, что в настоящее время практически на любой машине установлено как минимум два ядра процессора.Эту проблему не нужно исправлять.