かなりの柔軟性を持ってタスクをスケジュールできる C# ライブラリ (できればオープン ソース) を探しています。具体的には、「毎週 XXXX 時間に平日」または「毎週月曜日に XXXX 時間」だけでなく、N 単位の時間ごとに実行するようにスケジュールできる必要があります。それ以上の機能があればいいのですが、必須ではありません。これは Azure WorkerRole で使用したいもので、Windows のスケジュールされたタスク、「at」、「Cron」、およびインストールや操作に GUI が必要なサード パーティ アプリを即座に除外します。図書館を探しています。
6 に答える
http://quartznet.sourceforge.net/
「Quartz.NET は、非常に普及している (原文のまま!) オープン ソースの Java ジョブ スケジューリング フレームワークである Quartz のポートです。」
PS: 賢明なことに、仕事中に Quartz.net に移動しようとしないでください ;-)
私はJava時代にQuartzを使用していましたが、うまく機能しました。私は現在、いくつかの.Net作業に使用していますが、さらにうまく機能します(もちろん、安定するまでには何年もかかります)。したがって、私は確かにその推奨事項を支持します。
注目すべきもう 1 つの興味深い点は、.Net 4.0 の新しい System.Threading.Tasks です。私は作業を並列化するためにタスクを使用してきましたが、マルチコア/プロセッサを大いに活用しています。そこに TaskScheduler という名前のクラスがあることに気付きました。詳しくは見ていませんが、QueueTask、DeQueTask などのメソッドがあります。少なくとも調査する価値があるかもしれません。
Codeprojectの .NET 用の新しいタスク スケジューラ クラス ライブラリを参照してください。
この質問でQuartzについて読みましたどのようにC#Windowsサービスをスケジュールして毎日タスクを実行しますか? . これは C# ライブラリであり、柔軟なスケジューリングが可能です。
クォーツは良い解決策のようです。
私は最近 (今年)、取り組んでいた主要なプロジェクトでカスタム タスク スケジューラを作成する必要がありました。彼らも Windows タスク スケジューラを使用できませんでした。また、(ASP.net Web サイト経由で) アセンブリをアップロードすることでカスタム機能を実行し、サービスが指定された時間に適切なタスクを実行できるようにしたいと考えていました。
これは正直なところ悪夢のようなものでした (設計と実装はそれほど重要ではありませんが、スケジューリング ロジックは少し面倒でした)。
「自分自身を転がす」ことを決定する前に、他のすべての道を使い果たすことを強くお勧めします(つまり、車輪を再発明します!)。
Schedulerと呼ばれるAditi Technologiesの新しいクラウドベースのスケジューラがあります。
スケジューラを使用すると、開発者は、単純または複雑な CRON スケジュールで実行される HTTP Webhook を介してタスクの実行をスケジュールできます。