如何使用C ++停止服务线程的服务?
服务线程运行条件while循环。当此条件为false时,服务线程将退出循环。但即使我将服务状态设置为停止状态,它的状态也显示为“已启动”。
Example:
flag = 0
VOID WINAPI ServiceMain(DWORD argc, LPTSTR *argv)
{
// Register ServiceCtrlHandler
//
....
....
startService();
}
void startService()
{
while(!flag)
{
if(!<condition>)
{
flag = 1;
}
}
SetServiceStatus(<..>) // call to win32 API to update Service status to Stopped
}
答案 0 :(得分:0)
您在示例中提到的ServiceCtrlHandler将处理控制请求并最终设置状态。
请按照The Complete Service Sample on MSDN了解处理控制请求调度程序线程与服务主线程之间的交互。
另请参阅Writing a ServiceMain Function和Writing a Control Handler Function。