2

バッチとして実行することを目的とした電子メール C# コンソール アプリケーションを作成するタスクを与えました。私は C# 分野に非常に慣れていないため、自分の方向性についてまったくわかりません。この C# コンソール アプリケーションはサーバーにデプロイされ、サーバー時間に基づいて特定の時間内に実行されることが予想されます。

いくつかの調査の結果、ほとんどの提案はタスク スケジューラまたはウィンドウ サービスの使用に関するものですが、この C# コンソール アプリケーションを独自に実行できるかどうか疑問に思っています。たぶんそれを実行した後、それ自体をサーバーに登録し、サーバーはそれを定期的に処理しますか?

4

2 に答える 2

4

コードでスケジューラを管理したい場合は、Quartz.NET を参照してください: http://quartznet.sourceforge.net/

このライブラリは、ジョブとトリガーの作成を提供します。

例 (直接: http://quartznet.sourceforge.net/tutorial/lesson_3.htmlから):

// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();

// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();

// construct job info
JobDetail jobDetail = new JobDetail("myJob", null, typeof(DumbJob));
// fire every hour
Trigger trigger = TriggerUtils.MakeHourlyTrigger();
// start on the next even hour
trigger.StartTime = TriggerUtils.GetEvenHourDate(DateTime.UtcNow);  
trigger.Name = "myTrigger";
sched.ScheduleJob(jobDetail, trigger);

これは、コンソール アプリケーションを継続的に実行する必要があることを意味し、ジョブにはあまり適していません。

オプション 1. コンソール アプリケーションを実行するタスク スケジューラ (非常に簡単) を介してタスクを追加します。タスクの例を参照してください: http://www.sevenforums.com/tutorials/12444-task-scheduler-create-new-task.html

オプション 2. Quartz.NET や .NET のTimerクラスなどのライブラリを使用してジョブをスケジュールし、バッチ操作を実行する Windows サービス (それほど複雑ではありません) を作成します。Windows サービスの作成については、http://msdn.microsoft.com/en-us/library/zt39148a.aspxを参照してください。

オプション 3. コンソール アプリケーションに Quartz.NET や /Net のTimerクラスなどのスケジュール ライブラリを実装させ、それをサービスとして実行します (もう少し複雑です):実行可能ファイルから Windows サービスを作成します。

于 2013-09-11T11:50:17.760 に答える
2

ユーザー入力を必要としない限り、単独で実行できます。たとえば、プログラムを Windows タスク スケジューラで実行するようにスケジュールできます。

于 2013-09-11T11:06:53.437 に答える