2011-04-06 87 views
0

我正在构建我的第一个Windows服务......多么冒险。Windows服务调试繁琐

让我开始我跟着以下walktrough:

http://msdn.microsoft.com/en-us/library/zt39148a.aspx#Y902

这是非常良好的结构和它的作品...这意味着我得到了创建活动的处理通信和在的onStop日志消息!日志。

现在,我的问题是这样的:

我每次更改服务代码,我需要重新安装项目,添加服务项目作为主项目输出和重新安装服务。

这是非常乏味的,所以我问是否没有更好的方法来测试和调试服务。

问候

回答

1

有时如果我只是想在Windows服务中测试一些代码而不需要它作为服务运行,我会做什么我将修改Main()。

所以不是我的主要是这样的:

ServiceBase[] ServicesToRun; 
ServicesToRun = new ServiceBase[] 
{ 
    new Service1() 
}; 
ServiceBase.Run(ServicesToRun); 

我把它修改只是为了

Service1 service = new Service1(); 
service.Run(); 
// Put a breakpoint on the following line to always catch 
// your service when it has finished its work 
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); 

,并让说,我的OnStart方法看起来是这样的:

protected override void OnStart(string[] args) 
{ 
    // code to start your service. 
    ThreadStart ts = new ThreadStart(Run); 
    Thread t = new Thread(ts); 
    t.Start(); 
} 

所以Run()只是你的OnStart方法启动的方法。

请记住,这不能保证您的服务作为服务安装后能够正常工作。但有时它对快速测试一些代码很有用。

+0

嗯,我想我必须这样做的第一种方法。 我没有运行(或类似的东西)在service1类... – RedEagle 2011-04-07 09:52:32

+0

我添加了一个例子,我的意思与上面的Run()。 – Web 2011-04-07 11:11:27

5

一旦你的服务被停止,你应该能够简单地复制了旧版本的新版本更新的二进制文件。