2016-09-01 4 views
0

Я собираюсь перечислять не установленные обновления с помощью Windows Update Agent. И у меня есть один вопрос. Это способ отбросить/остановить метод BeginSearch (процесс поиска). Я попытался остановить процесс поиска с EndSearch, но это не остановит его. Благодарю.Как отказаться от IUpdateSearcher :: BeginSearch

+0

Откуда Вы знаете, что EndSearch не останавливает поиск? Что происходит? Что возвращает EndSearch? – andlabs

+0

EndSearch не возвращается. Программа просто останавливается в EndSearch и ждет завершения процесса. Это правильное поведение? –

+1

Учитывая, что вы получаете ISearchResults из этого, я предполагаю, что ответ да; зайдите в ISearchJob :: RequestAbort()? (Сначала вызовите его, затем EndSearch(), затем отпустите ISearchResults, поскольку это должно просто дать вам ResultCode orcAborted ... Следуйте гиперссылкам документации = P) – andlabs

ответ

1

IUpdateSearcher::EndSearch() ждет завершения поиска в первую очередь. Вы можете явно запросить поиск, чтобы остановить раннее, сначала позвонив ISearchJob::RequestAbort() на ISearchJob, который вы получаете от IUpdateSearcher::BeginSearch(). После этого ISearchResults, возвращенный с EndSearch(), должен иметь ResultCodeorcAborted, и вы должны быть в безопасности, только выпустив его. (Вы должны по-прежнему звонить EndSearch(), потому что операция прерывания по-прежнему асинхронна, так как намечено по имени «запрос прерывания».)

Смежные вопросы