【发布时间】:2016-02-08 11:12:34
【问题描述】:
我创建了 Windows 服务。 Installutil.exe 安装成功,但是当我按下开始按钮时出现进度条“正在启动”,然后它停止在 50%。我必须取消。取消服务后完美运行,但禁用启动、停止和暂停命令。如果我想停止服务,我必须卸载服务。可能是什么原因?
主要方法:
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new TelegramBotService()
};
ServiceBase.Run(ServicesToRun);
}
这是我的服务类:
partial class TelegramBotService : ServiceBase
{
private static Logger logger = LogManager.GetCurrentClassLogger();
public TelegramBotService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
RunBot().Wait();
logger.Info("Start windows service");
}
catch(Exception ex)
{
logger.Error(ex.Message);
}
}
private async Task RunBot()
{
try
{
logger.Info("Start Telegram Bot");
//var ElectionsBot = new ElectionsInfo();
var ElectionsBot = new ElectionsCount();
await ElectionsBot.Start();
}
catch(Exception ex)
{
logger.Error(ex.Message);
}
}
protected override void OnStop()
{
logger.Info("Stop windows service");
}
}
【问题讨论】:
-
ElectionsBot.Start()会回来吗? -
不,Start() 是“公共异步任务”方法
-
然后查看Windows Service to run constantly,讨论您的问题和各种解决方案。
-
我不相信这与@CodeCaster 指定的问题重复。 CodeCaster 提出的问题使用event-based asynchronous pattern,而这个问题(和我的答案)使用更现代的task-based asynchronous pattern。
标签: c# windows-services