windows服务程序的问题
我在服务程序里用creattread创建个线程来运行个功能在指定情况下没有运行。而我用一般的方法编译出个EXE。在指定情况却能成功。。不知道问题出在什么地方。。HANDL...
我在服务程序里用creattread创建个线程来运行个功能 在指定情况下没有运行。而我用一般的方法编译出个EXE。在指定情况却能成功。。不知道问题出在什么地方。。HANDLE hThread=CreateThread(NULL,0,CmdService,NULL,0,NULL);
CloseHandle(hThread);
功能函数:
DWORD WINAPI CmdService(LPVOID lpParam)//功能主题
{ while(1)
{ Sleep(900);
int IsEnable;
IsEnable = ReadRegDword("Enable");
if(IsEnable)
{ int iHour; int iMin; int iSec; iHour = ReadRegDword("Hour");
iMin = ReadRegDword("Minute");
iSec = ReadRegDword("Second");
SYSTEMTIME st;
::GetLocalTime(&st);
if (st.wHour == iHour) { if (st.wMinute == iMin) { if (st.wSecond == iSec) { MySystemShutdown(); } } } } } return 0;} 展开
CloseHandle(hThread);
功能函数:
DWORD WINAPI CmdService(LPVOID lpParam)//功能主题
{ while(1)
{ Sleep(900);
int IsEnable;
IsEnable = ReadRegDword("Enable");
if(IsEnable)
{ int iHour; int iMin; int iSec; iHour = ReadRegDword("Hour");
iMin = ReadRegDword("Minute");
iSec = ReadRegDword("Second");
SYSTEMTIME st;
::GetLocalTime(&st);
if (st.wHour == iHour) { if (st.wMinute == iMin) { if (st.wSecond == iSec) { MySystemShutdown(); } } } } } return 0;} 展开
1个回答
展开全部
若要调试服务,必须首先启动服务,然后将一个调试器附加到正在运行服务的进程中。然后可以使用 Visual Studio 的所有标准调试功能来调试应用程序。 警告除非知道进程是什么,并且知道附加到进程或可能取消进程所带来的后果,否则不要附加到进程。例如,如果附加到 WinLogon 进程,然后停止调试,系统就会暂停,因为没有 WinLogon,系统无法运行。只能将调试器附加到正在运行的服务。附加进程会中断服务的当前运行;它并不真正终止或暂停服务的处理。也就是说,如果开始调试时服务正在运行,则在进行调试时,该服务从技术上说仍处于“已启动”状态,但它的处理已挂起。附加到服务的进程使您能够调试大多数服务代码,但并非全部;例如,由于服务已经启动,因此不能用这种方法调试服务的 OnStart 方法中的代码,或调试用于加载服务的 Main 方法中的代码。解决此问题的一个方法是:在唯一作用是帮助调试的服务应用程序中创建一个临时服务。可以将两个服务都安装上,然后启动此“虚拟”服务加载服务进程。临时服务启动了进程后,就可以使用 Visual Studio 中的“调试”菜单来附加到服务进程。当附加该进程之后,可以设置断点并使用这些断点来调试代码。当退出用于附加到该进程的对话框时,实际上已处于调试模式。您可以使用“服务控制管理器”开始、停止、暂停和继续您的服务,因此命中已设置的断点。调试成功后,移除此“虚拟”服务。 注意调试OnStart 方法可能比较困难,因为 Windows 服务管理器将所有尝试启动服务的时间限制在 30 秒内。有关更多信息,请参见疑难解答:调试 Windows 服务。调试服务安装您的服务。有关更多信息,请参见如何:安装和卸载服务。可从“服务控制管理器”、“服务器资源管理器”或代码启动服务。有关更多信息,请参见如何:启动服务。在Visual Studio 中,从“调试”菜单中选择“进程”。即会出现“进程”对话框。单击“显示系统进程”。在“可用进程”区域内单击服务的进程,然后单击“附加”。 提示该进程将与服务的可执行文件同名。出现“附加到进程”对话框。选择任意适当的选项,然后单击“确定”关闭对话框。 注意现在您处于调试模式。设置要在代码中使用的任意断点。
追问
表示 好笼统 能针对点吗 大牛。。。windows服务程序的调试我只会用看debug输出情况 现在的情况是在这个指定点本该运行的功能没有运行成功 但是这个功能又没有问题 。 因而我怀疑是不是 我线程创建出了问题还是 服务程序框架的问题 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询