2016-08-27 12 views
1

コンソールアプリケーションはC#で書かれており、毎日実行するようにスケジュールされており、組み込みWindowsタスクスケジューラを使用しています。それが実行されるたびに黒のコンソールボックスが実行中にポップアップして閉じます。私はコンソールに何も書いていません。MVCでコンソールアプリケーションを実行する方法

1.検索結果に他の質問がありました。タスクスケジューラを実行しました。 しかし、私は決めることができなかった私はASP.Net MVC Webアプリケーションでコードを記述します。 これがコードです。 私はこれを試しています。

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 私は出力のtype.itが非常に参考に変更されました。 – Selman

+0

それは私が言ったこととまったく同じではありません:P あなたが探していたことをうれしく思います。 –

3

は容易ではありません、あなたは注意する必要があり、簡単にあなたの全体のアプリドメインをダウンさせることができます。

これは問題の投稿です。

How to Run Background Tasks

あなたは異なるスケジュールを実行している複数のジョブを管理する必要がある場合、私は非常にHangfireをお勧めします。これはオープンソースソフトウェアの大きな部分です。

+1

私はそれです。ありがとう – Selman

関連する問題