由于某些原因(例如,我希望程序能够在系统启动时自动运行并且一直运行),我决定将程序开发为Windows服务应用程序。目前,我的实现方法如下:
- 将主要业务逻辑实现为类库。
- 实现一个Windows控制台应用程序作为客户端程序,该程序将构建业务对象并定期调用业务逻辑组件。
开发Windows服务应用程序以启动和停止控制台应用程序。
3.1 在OnStart方法中启动进程。
djsProcessStartInfo = new ProcessStartInfo()
{
UseShellExecute = false,
WorkingDirectory = rootDir + depolyDate,
Arguments = args,
FileName = rootDir + depolyDate + @"\" + appName
};
try
{
djsProcessToRun = Process.Start(djsProcessStartInfo);
}
catch(Exception ex)
{
///
}
3.2 在 OnStop 方法中停止进程。
if (djsProcessToRun != null)
{
try
{
djsProcessToRun.Kill();
}
catch (Exception ex)
{
///...
}
}
else
{
///...
}
这是开发Windows服务应用程序的正确方式吗? 当进程djsProcessToRun无法运行时,我遇到了问题,有时我也无法停止它。 是否有最佳实践需要遵循?(例如如何处理异常,如何在Windows服务和目标Windows应用程序之间分离功能���