4

C#/.NET で単純なジョブ スケジューリングを行うにはどうすればよいですか?

毎日毎時毎週など、自動的に実行したい (特定のクラスの) メソッドがあるとします。

これを行う簡単な方法はありますか?

4

2 に答える 2

11

.net でこれを行うには 3 つの方法があります

1) Windows サービスを作成します。Windows(Windows 7を使用していると仮定)で、スタートボタンをタップして「ローカルサービスを表示」と入力し、結果をクリックすると、ここに表示されるすべてがWindowsサービスです。Windows サービスをコーディングする場合、それは基本的に、サービスをインストールしてスケジュール時間を設定するコードでラップされたコンソール アプリケーションです。Windows サービスの作成方法に関するチュートリアルは多数あります。Microsoft のガイドは次のとおりです: http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.80).aspx

2) 「exe」アプリケーションを作成し、「タスク スケジューラ」に入れます。もう一度、スタートボタンを押して「タスクスケジューラ」を検索してください。これは、アプリケーションではなく、タスク スケジューラからスケジューリングを制御するという点で、Windows サービスとは異なります。また、以前は、オペレーティング システムの起動時に Windows サービスを開始するように設定できるため、再起動時にスケジュールされたタスクを再起動する必要がありました (このルールがまだ適用されるかどうかはわかりません。タスク スケジューラは使用していません)。しばらくの間)。これを行う方法に関するマイクロソフトのガイドは次のとおりです。 http://windows.microsoft.com/en-GB/windows7/schedule-a-task

3) エンタープライズ レベルのジョブ スケジューリング フレームワークである Quartz.NET も確認できます。私はそれを数回使用しましたが、非常にうまく機能します。Quartz.NET はここにあります: http://quartznet.sourceforge.net/

もう1つ注目したいのは「トップシェルフ」です。これにより、Windows サービスの開発が容易になります: http://topshelf-project.com。私自身は使用していませんが、多くの人が使用していて、推奨しています。

質問に詳細を追加した後に編集

ある種の cron ジョブに相当するものを使用してクラスのメソッドを呼び出す方法を探している場合、これを行う方法はありません。このクラスをアプリケーション (exe) の一部にし、上記の方法のいずれかを使用してその exe の実行をスケジュールする必要があります。

最も迅速かつ簡単な方法 (アプリケーションのニーズによっては必ずしも最適とは限りません) は、単純なコンソール アプリケーションを作成することです ( http://msdn.microsoft.com/en-us/library/ms438026(v=office.14).aspx)。話しているクラスをそれにコピーし、アプリケーションのメイン メソッドでスケジュールするメソッドを呼び出します。次に、上記のようにタスク スケジューラを使用します。

それが役に立ったことを願っています。

于 2012-12-09T15:07:46.073 に答える
1

ASP.NET アプリケーションを使用している場合、最も簡単な方法は、Windows タスク スケジューラで を使用してアプリ内の特別な URL を呼び出すことですcurl.exe

Windows タスク スケジューラを使用して、独自のカスタム EXE を開始することもできます。

于 2012-12-09T16:25:44.720 に答える