我正在使用Topshelf v3.1将我的控制台应用程序安装为windows服务。我通过命令行安装我的控制台,比如: myconsole install
一切看起来都很好,除了命令似乎永远不会完成,我的意思是,通常一旦执行了一个命令,命令行控制台就会恢复到您可以再次键入另一个命令的状态。不知怎么的,topshelf命令在最后一点停止了,所以我必须按C+C来终止该命令。
我的代码如下:
class Program
{
static void Main(string[] args)
{
//HostFactory.Run(x =>
//{
// x.Service<DummyService>(s =>
// {
// s.ConstructUsing(name => new DummyService());
// s.WhenStarted(tc => { });
// s.WhenStopped(tc => { });
// });
// x.RunAsLocalSystem();
// x.SetDescription("DummyService1");
// x.SetDisplayName("DummyService2");
// x.SetServiceName("DummyService3");
// x.StartAutomatically();
//});
var service = new DummyService();
service.Run();
}
}不知何故,如果我取消注释掉上面注释掉的代码块,然后注释掉Main方法中的最后两行。然后我再次运行该命令,它神奇地工作了。
PS: DummyService.Run方法只包装注释过的代码块。从本质上讲,它们是相同的。
有什么想法吗?
干杯,Ld
发布于 2013-03-06 06:31:27
托架是用来运行服务的。这是预期的行为。该服务需要像Windows服务正常运行一样连续运行(直到发送停止命令)。在命令行中,您需要使用CTRL+C发出服务结束的信号。
如果你只想运行一条命令,Topshelf是一个错误的方法。作为调试服务的一种简单方法,Topshelf允许您以命令行的形式正常运行服务。
https://stackoverflow.com/questions/15213618
复制相似问题