关于使用Service Application生成的服务程序的问题。请朋友们进来看看,谢谢

aiyu33 2004-06-14 11:36:54
我的操作系统是xp,我做了一个很简单的服务程序。(代码如下)
服务注册后,服务能正常启动,但每当我想停止或暂停服务时却总停不下来,
报如下的错误。
在本地计算机无法中止本服务程序。
服务并未返回错误,这可能是一个windos内部错误或服务内部错误。如果问题持续存在,请与您的系统管理员联系。
...全文
111 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
seeafter 2004-06-19
  • 打赏
  • 举报
回复
用信号灯
aiyu33 2004-06-16
  • 打赏
  • 举报
回复
那有什么好方法让服务一直跑下去不结束等待另外的命令?
aiyu33 2004-06-15
  • 打赏
  • 举报
回复
那段代码我是想让服务主线程一直跑下去不结束退出,但怕太占用系统资源才使用sleep函数
zihan 2004-06-15
  • 打赏
  • 举报
回复
建议你删除这段代码.
zihan 2004-06-15
  • 打赏
  • 举报
回复
while(TerminateFlag)
{
Sleep(6000);
}
刚刚没有看到.你这个是干什么的?好像就是一个死循环了,sleep是阻塞的,你又没有释放cpu资源,当然其他的就不能够执行TerminateFlag就永远为真.
aiyu33 2004-06-15
  • 打赏
  • 举报
回复
我是使用-install命令来安装的
aiyu33 2004-06-15
  • 打赏
  • 举报
回复
我将线程程序屏蔽掉还是有这个问题,难道是我创建服务程序时的问题?
childman 2004-06-15
  • 打赏
  • 举报
回复
赞同楼上的,可以的话贴出线程代码。
zihan 2004-06-15
  • 打赏
  • 举报
回复
请问你的线程是怎么运行的?是不是里面有什么阻塞模式的东西,导致就算你调用了
pTimerThread->Terminate();
它也不会立即停止线程,你试试用
TerminateThread();或者修改你的线程.
aiyu33 2004-06-14
  • 打赏
  • 举报
回复
多谢大家关注这个问题了?
aiyu33 2004-06-14
  • 打赏
  • 举报
回复
TTimerThread * pTimerThread = NULL;
bool TerminateFlag = true;
//---------------------------------------------------------------------------
__fastcall TTransmitDataService::TTransmitDataService(TComponent* Owner)
: TService(Owner)
{
}

TServiceController __fastcall TTransmitDataService::GetServiceController(void)
{
return (TServiceController) ServiceController;
}

void __stdcall ServiceController(unsigned CtrlCode)
{
TransmitDataService->Controller(CtrlCode);
}
//---------------------------------------------------------------------------
void __fastcall TTransmitDataService::ServiceStart(TService *Sender,
bool &Started)
{
//线程只是读循环读时间,做一个定时器功能而已
pTimerThread = new TTimerThread(false);
Started = true;
TerminateFlag = true;
}
//---------------------------------------------------------------------------
void __fastcall TTransmitDataService::ServicePause(TService *Sender,
bool &Paused)
{
pTimerThread->Suspend();
Paused = true;
TerminateFlag = false;
}
//---------------------------------------------------------------------------
void __fastcall TTransmitDataService::ServiceContinue(TService *Sender,
bool &Continued)
{
pTimerThread->Resume();
Continued = true;
TerminateFlag = true;
}
//---------------------------------------------------------------------------
void __fastcall TTransmitDataService::ServiceStop(TService *Sender,
bool &Stopped)
{
pTimerThread->Terminate();
delete pTimerThread;
pTimerThread = NULL;
Stopped = true;
TerminateFlag = false;

}
//---------------------------------------------------------------------------
void __fastcall TTransmitDataService::ServiceExecute(TService *Sender)
{
while(TerminateFlag)
{
Sleep(6000);
}
}
//------

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧