我正在构建使用FileSystemWatcher的Windows服务,并在后台运行。保持C#应用程序运行
我不想在每次我想调试时都继续卸载和安装服务,所以想在正常的程序中进行大部分的开发,然后再将其移植到服务中。但我对此很陌生,当我运行它时,它只是贯穿整个区块并退出。
什么是保持程序运行的好方法?
我正在构建使用FileSystemWatcher的Windows服务,并在后台运行。保持C#应用程序运行
我不想在每次我想调试时都继续卸载和安装服务,所以想在正常的程序中进行大部分的开发,然后再将其移植到服务中。但我对此很陌生,当我运行它时,它只是贯穿整个区块并退出。
什么是保持程序运行的好方法?
http://einaregilsson.com/run-windows-service-as-a-console-program/
我用这个之前,根据是否调试我的服务作为控制台应用程序及其在交互式用户环境中运行。
public partial class DemoService : ServiceBase
{
static void Main(string[] args)
{
DemoService service = new DemoService();
if (Environment.UserInteractive)
{
service.OnStart(args);
Console.WriteLine("Press any key to stop program");
Console.Read();
service.OnStop();
}
else
{
ServiceBase.Run(service);
}
}
while (true)
{
// Execute your program's functionality here.
}
我之前写了一个7部分系列文章,标题为:Building a Windows Service。它涵盖了所有建筑服务的复杂性,使其易于调试和自行安装。
的基本功能集我一直在寻找如下:
最终的结果是一个Visual Studio项目模板通过一步完成上述所有操作,创建一项工作服务。这对我来说是一个很好的节省时间。
请参阅Building a Windows Service – Part 7: Finishing touches以获取项目模板的链接并安装说明。
以下是来自MSDN @http://msdn.microsoft.com/en-us/library/7a50syb3(v=vs.80).aspx?ppud=4的文档。我已经尝试过,它在.NET Framework 3.x下工作。目前我找不到关于它的描述性说明。
使用编译指示#如果DEBUG用于调试目的(如控制台输出)。另一个是使用Debug对象。
如果您对此有任何疑问,请这么说。我可能能够找到我的笔记或自己制作Windows Service应用程序,只是为了查看MSDN上的步骤是否仍然有效。
为了保持无限期运行,程序通常需要某种类型的循环。 –
'while(true){...}',也许? –
看看这个问题:http://stackoverflow.com/questions/2517550/wrapping-a-c-sharp-service-in-a-console-app-to-debug-it –