由于某种原因(例如,我希望它在系统启动时自动运行并永远持续下去),我决定将程序开发为Windows服务应用程序.目前,我的实现如下:将主要业务逻辑实现为类库.将Windows控制台应用程序实现为客户端程序,它将构造业务对...

由于某种原因(例如,我希望它在系统启动时自动运行并永远持续下去),我决定将程序开发为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应用程序之间分隔功能)
解决方法:
更好的方法是使用共享程序集(即类库),然后可以创建两个使用共享程序集的客户端-测试控制台应用程序和Windows服务.
织梦狗教程
本文标题为:C#-Windows服务最佳实践


基础教程推荐
猜你喜欢
- c# 如何实现自动更新程序 2023-04-09
- 详解C#中delegate/event/EventHandler/Action/Func的使用和区别 2023-07-18
- C#实现窗体全屏的两种方法 2023-01-06
- C#实现 Server-sent Events的步骤 2023-03-28
- Unity实现领取奖励特效 2023-03-13
- C#加密知识整合 (AES,MD5,RSA,SHA256) 2023-05-12
- C#中IntPtr类型的具体使用 2023-05-21
- C#对WPF数据绑定的菜单插入Seperator分隔 2023-06-15
- Unity Shader模拟玻璃效果 2023-02-16
- C#异常处理知识汇总 2023-02-16