2016-06-23 10 views
3

私はC#を使用しています。
私はそれがnoobの質問だと思うけど、とにかく試しています。
私はメソッドを持つC#プロジェクトを持っています:X(),Y(),Z()
私は毎日/毎時自分のメソッド(X()、Y()、Z()を異なる時間に実行するタスクスケジューラを探しています。
これを行う最善の方法は何ですか?メソッド/タスクスケジューラc#

+2

予定さWindowsタスクスケジューラのタスク? –

+0

フレームワークが必要な場合は、Quartz.netのWindowsタスクスケジューラを確認してください。 –

答えて

4

それぞれの機能を呼び出す単一のパラメータ(think myapp.exe x)を受け付けるコンソールアプリケーションを作成するだけです。次に、スケジュールされたタスクをWindows Schedulerに追加すると、すべての設定が完了します。

3

最も簡単な方法は、既存のライブラリを使用することです。 Scott Hanselmanはこのブログをよく持っていましたhttp://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx

注:この記事では、asp.netについて説明していますが、スケジューラについては、コンソールやWindowsアプリケーションでも実行できます。

私は個人的に.netコアをサポートするように更新されたFluentスケジューラ(https://github.com/fluentscheduler/FluentScheduler)を使用しています。使い方は簡単ですし、シンプルなスケジューリングの要件がある場合は、おそらく私がお勧めします。

+0

OPはWebアプリケーションを指定していませんでした。スケジュールされた単純なジョブは十分であり、より多くの機能(トリガーなど)を提供します。 Fluent SchedulerまたはQuartz.NETがWindowsサービスに適している –

+0

Webアプリケーションについて何も言わなかった。私は実際には、実行中のコンソールアプリケーションを通じてFluentスケジューラを使用します。他の人がWindowsのタスクスケジュールを使用することについて言ったことは問題ありません。プログラムにスケジューリングを書くと、それは自己であり、エラー処理やジョブ間の依存関係に関してもっと多くのことができるということです。しかし、これはすべてOPの要件にとって過度のものかもしれません。 –

+0

Hanselmanの記事はWebアプリケーションについてのものです –

2

時間、日、またはその他の既知の期間にいくつかのコードを実行する場合は、コンソールアプリケーションを作成し、Windowsタスクスケジューラを使用してこのアプリケーションを実行することをお勧めします。

この期間が不明確で、一部のロジックや計算によって変わる場合は、常に実行中のWindowsサービスを使用することをお勧めします。これは、必要に応じてメソッドを実行します。

1

私はWindowsサービスを作成し、Windowsサービスではあなたのメソッドをタイマーチェックで呼び出すことができます。

1

アプリケーションが常に実行されている場合は、反応性の拡張機能を試すことができます(私たちは私たちの古い会社でそれをそうしました):

Observable.Timer(TimeSpan.FromSeconds(5)).Subscribe(x=>X()); 

チェックをここで詳細は、単に作成しないのはなぜhttps://msdn.microsoft.com/en-us/library/hh242977(v=vs.103).aspx