3

出于某种原因(例如,我希望它在系统启动时自动运行并永远持续下去),我决定将我的程序开发为 Windows 服务应用程序。目前,我的实现如下:

  1. 将主要业务逻辑实现为类库。
  2. 将 Windows 控制台应用程序实现为客户端程序,该程序将构建业务对象并定期调用业务逻辑组件。
  3. 开发 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 应用程序之间的功能)

4

1 回答 1

3

更好的方法是使用共享程序集(即类库),然后您可以创建两个使用共享程序集的客户端 - 您的测试控制台应用程序和您的 Windows 服务。

于 2013-09-02T12:39:42.770 回答