2016-08-27 118 views
1

我使用C#编写控制台应用程序,该应用程序计划每天使用Built in Windows Task Scheduler运行。每次运行时,黑色控制台框会在执行期间弹出,然后关闭。我没有写任何东西给控制台。如何在MVC中运行控制台应用程序

1.我在搜索结果中发现了其他问题我做了任务调度器。 但我不能决定其中我会在ASP.Net Mvc网络应用程序中编写代码。 这是代码。 我试过这个。

private void CreateTaskRunDaily() 
{ 
    using (TaskService ts = new TaskService()) 
    { 
     TaskDefinition td = ts.NewTask(); 
     td.RegistrationInfo.Description = "My first task scheduler"; 

     DailyTrigger daily = new DailyTrigger(); 
     daily.StartBoundary = Convert.ToDateTime(DateTime.Today.ToShortDateString() + " 16:30:00"); 
     daily.DaysInterval = 1; 
     td.Triggers.Add(daily);    
     td.Actions.Add(new ExecAction(@"C:/sample.exe", null, null)); 
     ts.RootFolder.RegisterTaskDefinition("TaskName", td); 
    } 
} 

我无法决定我应该在哪里付诸实践。

2.我想在程序运行时只注册一次,所以每次运行时都要重新添加,一遍又一遍。我需要防止它。 如果有任何建议,它会有很大的帮助。

+0

我不太清楚你在这里试图实现什么,你是否试图从ASP.NET应用程序按计划执行控制台应用程序? – SimonGates

+0

@SimonGates是的,并添加任务调度程序,但我不知道我需要添加代码的确切位置? – Selman

回答

1

MVC不会为您运行计划任务,并非没有不属于MVC项目的黑客。我建议在控制台应用程序上更改项目属性,并将输出类型设置为Windows应用程序。这将使控制台无法显示。您也可以以不同的用户身份运行。

如果你依然热衷,检查了这一点: http://www.radicalgeek.co.uk/Post/10/running-a-task-on-a-schedule-from-an-mvc-web-application

+0

感谢您的分享。我发现这个http://stackoverflow.com/questions/2686289/how-to-run-a-net-console-app-in-the-background 我改变了输出类型,这是非常有帮助的。 – Selman

+0

是不是正是我所说的:P 很高兴你有你在找什么。 –

3

运行后台任务是不平凡的,你要小心,你可以很容易搞垮整个应用程序域。

这是一个关于这个问题的好帖子。

How to Run Background Tasks

我强烈建议Hangfire如果你需要管理运行不同的时间表多个作业。这是一个伟大的开源软件。

+1

我在上面。谢啦 – Selman

相关问题