c# - Topshelf - 服务未及时启动
问题描述
我正在尝试使用 topshelf 创建 Windows 服务。我已成功创建我想要的内容并对其进行调试。我还设法使用
myservice.exe install
但是在尝试使用服务管理器启动服务时,我不断收到以下错误
我参考了以下帖子并尝试通过添加一个虚拟方法从新线程运行计时器。但这也会产生同样的问题。
Topshelf 窗口服务在尝试启动服务时出现错误 1053
https://github.com/Topshelf/Topshelf/issues/183
我的代码:
class Program
{
static void Main(string[] args)
{
var rc = HostFactory.Run(x => //1
{
// x.StartManually();
x.Service<testclass>(s => //2
{
x.StartManually();
s.ConstructUsing(name => new testclass()); //3
s.WhenStarted(tc => tc.Start()); //4
s.WhenStopped(tc => tc.Stop()); //5
});
x.RunAsLocalSystem(); //6
x.SetDescription("Sample Topshelf Host"); //7
x.SetDisplayName("Stuff"); //8
x.SetServiceName("Stuff"); //9
}); //10
var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode()); //11
Environment.ExitCode = exitCode;
}
}
}
public class testclass
{
public testclass()
{
_timer = new System.Timers.Timer(1000) { AutoReset = true };
_timer.Elapsed += _timer_Elapsed;
startwatching();
}
void startwatching()
{
watcher.Created += new FileSystemEventHandler(copied);
watcher.EnableRaisingEvents = true;
}
public bool Start()
{
var myThread = new Thread(new ThreadStart(foreverWhile));
myThread.Start();
return true;
}
public void Stop() { _timer.Stop(); }
public void foreverWhile()
{
_timer.Start();
}
}
我从“startwatching”方法启动文件系统观察程序。我在做什么错?请指教
解决方案
推荐阅读
- python - 动画期间图像未在 python 图中更新
- google-apps-script - Google Script - 不属于我的日历活动
- sql-server - SSIS 脚本组件 - 遍历具有 NULL 值的列
- c# - ValidateModel 不起作用 asp.net core 3.0
- border - Google Docs API 中的表格边框
- c# - .NET Core 2.2 UserManager.CreateAsync 不允许重复的用户名
- java - 如何在 TestNG 报告中显示消息(对于通过的测试用例)
- excel - Excel 格式,从时间格式中删除日期
- generics - 如何在不使用任何框架(如 PRISM 或任何导航服务)的情况下按照 Xamarin.Forms 中的 MVVM 架构进行导航?
- python-3.x - 当 ForeignKey 设置为“self”时,如何避免“此字段是必需的”?