.NET程序集中的C#计划任务属性化方法
我经常发现,当我编写服务类(在ASP.NET应用程序中)时,除了通常的方法调用之外,我还希望安排方法调用,例如每天凌晨1点调用 我的想法是创建一个自定义属性,用于任何计划任务方法:.NET程序集中的C#计划任务属性化方法,c#,asp.net,C#,Asp.net,我经常发现,当我编写服务类(在ASP.NET应用程序中)时,除了通常的方法调用之外,我还希望安排方法调用,例如每天凌晨1点调用 我的想法是创建一个自定义属性,用于任何计划任务方法: [ScheduledTask(Every=TimeSpans.Day, At=6)] public static void Cleanup() { // some clean up code here } 为了实现这一点,我必须在web应用程序的应用程序启动方法中扫描AppDomain中加载的程序集。查找具
[ScheduledTask(Every=TimeSpans.Day, At=6)]
public static void Cleanup()
{
// some clean up code here
}
为了实现这一点,我必须在web应用程序的应用程序启动方法中扫描AppDomain中加载的程序集。查找具有ScheduledTask属性的静态方法,然后根据该属性调用调度程序来运行这些方法
我环顾了一下网络,发现似乎没有其他人做过这件事,我想知道出于某种原因,这通常是个坏主意!?你认为有可能吗
谢谢 我看到一些问题:
- 关注点分离。您的类提供了
实现和运行它的计划。管理员可能希望控制计划(例如,在活动较少时运行清理),因此更常见的做法是使用配置来提供计划清理
- 管理员很难了解计划的任务
- 附表的解释。您的示例是UTC 6还是当地时间
- 易于修改计划-您需要重新编译
- ASP.NET应用程序可以关闭,例如在一段时间不活动后,或按照预定义的计划关闭,并且在另一个请求到达之前不会再次启动。这使IIS成为运行计划任务的糟糕主机