私のサービスには、誰かがサービスを停止しようとしたときに潜在的にWinHttpSendRequest
を実行しているスレッドがあります。同期WinHttp要求をどのように取り消すことができますか?
WinHttpCloseHandle documentationは言う:
アプリケーション、
WinHttpCloseHandle
を使用してHINTERNET
要求ハンドルを閉じることにより、進行中の同期または非同期要求を終了することができますが、その後、同じマニュアルのように見えますこれに反する。それは言う:
アプリケーションは決して
WinHttpCloseHandle
同期要求を呼び出すべきではない。競合状態が発生する可能性があります。
this blog post私はWinHttpCloseHandle
に電話することはできません。
サービスを正常に停止できるようにこの操作をキャンセルするにはどうすればよいですか?時間がかかりすぎてサービスがすばやく停止しないため、実際にはWinHttpSendRequest
がタイムアウトするのを待つことはできません。 Windowsはこれをエラーとして報告し、シャットダウン時に強制的にサービスを終了させると思います。
アイデアをいただければ幸いです。