【问题标题】:Schedule .exe to run as a task but also allow user to open forms安排 .exe 作为任务运行,但也允许用户打开表单
【发布时间】:2016-04-12 17:03:57
【问题描述】:

我正在开发一个应用程序,它将检查某些文件是否已被修改并发送一封 Outlook 电子邮件通知用户上述更改。我们想安排任务每 24 小时运行一次。我在这里了解如何使用 Windows 任务计划程序执行此操作:http://windows.microsoft.com/en-in/windows/schedule-task#1TC=windows-7

我也研究过使用Windows service,但用户希望能够指定某些文件夹来检查和修改报告发送到的电子邮件地址,我不确定如何在服务中执行此操作.

我创建了一个表单,用于在应用程序的用户范围内存储文件路径和电子邮件地址。但是,如果我安排任务,它将打开表单。我希望仅在用户提示时打开表单(通过单击 .exe。)。该应用程序将始终根据最新设置每 24 小时运行一次(在后台)。

我可以创建一个表单应用程序并让服务调用用户设置吗?我是服务新手,不知道该往哪个方向发展。

我已经研究了这些:

Best way to run scheduled tasks

how to use windows service in windows form application

WCF using windows service

一些说明

我需要应用程序每 24 小时在后台运行一次(检查文件 + 发送电子邮件报告),而无需打开任何表单。

我需要能够手动打开表单以随时更新设置。

【问题讨论】:

  • Tony 建议使用命令行参数似乎是合理的,我不会称其为 hack。另一种可能性是使用调度程序在指定用户下运行程序,程序可以以某种方式检查它正在以什么用户身份运行。
  • 另一种可能是将后台部分编写为 Windows 服务,然后使 UI 成为一个单独的程序。
  • @user34660 是的,这是我所希望的,但除了我发布的最后一个链接之外,我找不到任何文档。
  • 对不起,我发了两个cmets。您指的是关于 Windows 服务的那个还是关于检查它以什么用户身份运行的那个?除非有超出您的问题的内容,否则您不需要 WCF,并且有很多关于编写 Windows 服务的文章。

标签: .net wcf windows-services


【解决方案1】:

看起来你可以隐藏运行它

https://www.calazan.com/windows-tip-run-applications-in-the-background-using-task-scheduler/

过去,我也使用过一些 3rd 方应用程序,它可以安排任何应用程序作为服务在后台运行

【讨论】:

  • 谢谢你,我知道如何安排任务运行——我只需要在预定时间不打开表单——只有当用户需要打开和保存设置时(手动点击可执行文件)。
  • 也许我没有正确理解您的需求。我认为您也可以在开始时隐藏表单,仅在需要时显示。你可以关注这篇文章stackoverflow.com/questions/70272/single-form-hide-on-startup
  • 我再次编辑了这个问题。隐藏表格不符合我的需要。当用户手动单击 .exe 时,我需要它来加载它,但它只能在预定时在后台运行。截至目前,我无法弄清楚如何在单个应用程序中同时执行这两项操作。
  • 一个技巧是使用命令行参数来确定它是否作为计划任务运行。一定有更好的方法,但它不在我的头上。
【解决方案2】:
  1. 创建控制台应用程序
  2. 在 app.config 中定义自定义配置部分 https://msdn.microsoft.com/en-us/library/2tw134k3.aspx

  3. 为了便于维护,可以将要监视的文件夹存储在不同的配置文件中

  4. 为用户选择的文件夹实施了 FileSystemWatcher,如此处所述 https://msdn.microsoft.com/en-us/library/2tw134k3.aspx

  5. 映射选定的文件夹监视并在机器上创建一个消息队列,该队列将累积所有文件夹更改

  6. 现在编写一个控制台应用程序来读取消息队列并为所有受影响的用户生成格式化的电子邮件

  7. 使用 Windows 任务计划程序实用程序计划控制台应用程序

【讨论】:

    猜你喜欢
    • 2017-08-28
    • 2011-10-19
    • 2021-12-30
    • 2012-09-27
    • 2017-04-01
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多