【问题标题】:Using single exe for different scheduled tasks使用单个 exe 执行不同的计划任务
【发布时间】:2015-08-06 13:35:59
【问题描述】:

在当前项目中,我使用任务调度程序来运行控制台应用程序来执行一些日常操作。现在,我正在考虑将相同的控制台应用程序用于需要每 15 分钟运行一次的另一个操作。为了识别同一控制台应用程序中的操作,我计划使用不同的参数。例如

MyProject.Services.exe "RunDailyTask"

MyProject.Services.exe "RunEvery15MinutesTask"

因此,两个调度程序将调用相同的 exe,但使用不同的参数来执行不同的操作。

我的问题是,这是个好主意吗?一项操作是否会影响另一项操作,因为两者都共享同一个 exe?

【问题讨论】:

    标签: c# windows-services scheduled-tasks


    【解决方案1】:

    是的。好主意。 不。一项操作是否会影响另一项操作,因为两者都共享同一个 exe?

    windows 通过不同的实例(线程)运行您的应用程序。当然,您必须确定 RunEvery15MinutesTask 何时必须在开始 RunDailyTask 之前完成其工作。

    【讨论】:

    • 谢谢努里。就我而言, RunDailyTask 作业是完全独立的。所以,对我来说,它是否在 RunEvery15MinutesTask 仍在运行时启动并不重要。
    • 所以你可以使用相同的应用程序。
    【解决方案2】:

    我的问题是,这是个好主意吗?一项操作会影响 其他因为两者都共享同一个exe?

    不,控制台 exe 在单独的进程中执行。当您运行同一个 exe 应用程序的多个实例时,这些实例中的每一个都会在其进程中执行。

    如果一个实例失败,只有那个进程受到影响;其他进程中的应用程序继续执行。当然,因为一个进程中的内存地址在另一个进程中没有意义

    You could simple test this by manually running two instances of your console application(by hard coding RunDailyTask and RunEvery15MinutesTask in each exe)

    除了将字符串参数传递给控制台之外,最好在可执行文件中使用数字标志(1,2),如果需要,您可以使用具有有意义值的枚举。

    enum OperationType
    {
      RunDailyTask = 1,
      RunEvery15MinutesTask = 2
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      相关资源
      最近更新 更多