读书人

C# 调试 服务程序如何在OnStart 函数

发布时间: 2013-12-21 20:16:01 作者: rapoo

C# 调试 服务程序,怎么在OnStart 函数里加断点?

protected override void OnStart(string[] args)


这个函数里,加了断点,,但是启动服务后,断点没有进来...


protected override void OnStop()

也加了断点,,停止服务时,断点进来了


关键问题是,安装服务后,如不启动服务,,在IDE里,就无法"附加到进程"

这样就导致,一直不能进入 onStart()里

怎么整才能调试 这个函数里的代码?


[解决办法]
这个函数里,加了断点,,但是启动服务后,断点没有进来...

OnStart是服务启动过程触发的,等启动好时,也就意味着这个事件处理结束了
你可以把要测试的东西放到子线程中,类似这样
ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork));

void DoWork()
{
Thread.Sleep(10000); //等待一段时间,以便附加进程后,可以命中断点
断点要测试的代码
。。。
}
[解决办法]
二楼正解,Start一般只进行服务的启动,,至于执行的任务在启动时新开线程去做。关于调试,我一般都是在解决方案里新建个控制台程序,内容跟服务里的任务一样,调试方便,省得每次去附加进程。

读书人网 >C#

热点推荐