У моего сервиса есть поток, который потенциально может выполнять WinHttpSendRequest
, когда кто-то пытается остановить мой сервис.Как можно аннулировать синхронный запрос WinHttp?
WinHttpCloseHandle documentation говорит:
Приложение может прекратить действие в незавершенном синхронного или асинхронного запроса, закрыв ручку
HINTERNET
запрос с использованиемWinHttpCloseHandle
Но потом на той же документации, кажется, противоречат этому. В нем говорится:
Приложение никогда не должно
WinHttpCloseHandle
вызывать синхронный запрос. Это может создать состояние гонки.
Я нашел this blog post, что, кажется, согласен, я не могу позвонить WinHttpCloseHandle
.
Мне интересно, как я могу отменить эту операцию, чтобы мое обслуживание можно было прекратить изящно? Я не могу дождаться, когда WinHttpSendRequest
будет тайм-аут, потому что он занимает слишком много времени, и мой сервис не останавливается достаточно быстро. Я думаю, что окна сообщают об этом как об ошибке, а затем насильно убивают службу при завершении работы.
Идеи были бы оценены.