У меня возникли трудности с использованием функции API QueueUserAPC
. В принципе, я создал новый поток, который просто петли, используя WaitForSingleObject
на объекте Event
, который я создал. Я хотел, чтобы это нить вроде бы «одинокий» рабочий поток, что я могу назначить случайные вызовы функций, что мне нужно обрабатывается асинхронно ..QueueUserAPC не работает, если не используется сразу после создания потока?
Однако, когда я создаю нить, единственный раз, когда QueueUserAPC
будет работать в напрямую после создания потока. Если я вставлю, скажите, Sleep(2000);
сразу после CreateThread
, тогда поместите QueueUserAPC
после сна, он не выполнит эту функцию, даже если она работает, если я сделаю это до Sleep
(сразу).
Я пробовал использовать другой дескриптор потока, я попытался сбросить объект события, проверил возвращенное значение QueueUserAPC
, когда он не работает (он равен 1, который MSDN говорит, что ненулевой результат успешный операция).
Я не совсем знаю, что с этим делать. Любые предложения будут ценны.
Спасибо!
J.R.
Большое спасибо, что оно работает. Я не понимал, что использовал неправильный вызов ожидания. – Joseph
Кроме того, MSDN: «Если приложение ставит APC перед запуском потока, поток начинается с вызова функции APC», поэтому объясняется «работа непосредственно после создания потока» :) –
WFSOE имеет * три * аргументы. Последний, отсутствующий в фрагменте, является важным. –