2

タスク スケジューラと同じように動作する Windows サービスを作成する必要があります。実行時間を構成でき、基本的にはそのスケジュールされた時間 (繰り返し) に .NET クラスを呼び出すだけです。これを行うための推奨される方法は何ですか? また、そのサービスのインストール/削除に関する情報をいただければ幸いです。

更新: タスク スケジューラの使用はオプションではありません (顧客の要件、IT 標準と関係があります)。それは彼らへの私の提案でもありましたが、うまくいきません。

解決策: 皆さんの回答に感謝します。Quartz.Net ソリューションは特に良さそうに見えますが、まさに必要なものを備えた次のソリューションを見つけました。

http://www.c-sharpcorner.com/UploadFile/ajifocus/AppScheduler05262006074807AM/AppScheduler.aspx?ArticleID=b52f76da-943f-4807-9675-869f135ef2cd

4

8 に答える 8

9

Quartz.Net スケジューラーをサービスに埋め込むことができます。

于 2008-12-25T04:56:03.217 に答える
2

ボックスにアクセスできる場合は、Windows タスク スケジューラを使用して、コンソール exe から機能を呼び出してみませんか。車輪を再発明するよりもはるかに簡単です。

于 2008-12-22T23:02:50.420 に答える
1

スケジューリングシステムを作成している場合は、Windowsサービスを作成する方がはるかに優れています。デバッグは困難ですが、すべての機能をサービスからヘルパークラスとサービスエージェントクラスに移動すると、サービスに煩わされることなく機能を簡単にテストできます。

次に、WCFサービスを介してフロントエンドに提供する必要のある情報を公開できます。これらは現在、任意の実行可能ファイルでホストできるため、Windowsサービスは問題なく機能します。Windowsサービス戦術の利点は、デスクトップが必要ないことです。スケジュールされたタスクは、バックグラウンドで実行することを目的としています(または実行する必要があります)。Windowsサービスは、バックグラウンドタスクへの優れたアプローチです。

アフターマーケットのサードパーティのスケジューリングシステム、オープンソーススケジューラ、quartz.netを見てきました。後者を選択しました。予算に余裕がある場合は、JAMSなどのスケジューリングシステムを検討してください。

于 2009-12-14T00:52:46.850 に答える
1

.NET タスク スケジューラhttp://TaskService.Codeplex.comを試すことができます。このプロジェクトは、毎日、毎時間、毎週、5 時間ごと、または 3 日ごとなど、さまざまな種類の繰り返しで .NET アセンブリを 1 日のいつでも実行するようにスケジュールする機能を提供します。

于 2009-04-09T17:59:24.960 に答える
1

以前も同じ問題がありましたが、タスクスケジューラ自体に少し問題があります。Linux の cron を確実に置き換えることはできません。かつて、まさにそれを行うためのサービスを書かなければなりませんでした。私はSystem.Threading.Timer1秒ループで走っていました。次に、xml ファイルに保存した構成に従って、起動する必要のあるイベント (外部 exe) をチェックします。

于 2008-12-25T04:35:07.453 に答える
0

ああ、たくさんあります。

.Net の標準的な Windows サービスから始めて、Properties\Settings 機能を使用して、スケジュールされた時間を保存します (これは実際には 1 回だけで機能します。より洗練された構成が複数回必要になります)。

また、その構成で実行したいアセンブリ/クラスを定義する文字列も含め、アセンブリに、基本クラスから継承されたクラスまたはインターフェイスを実装したクラスがあることを確認して、既知の型としてロードできるようにします。 Execute() などと呼ばれる既知のメソッドを実行します。

または、呼び出したいメソッドを構成ファイルで定義し、リフレクションを使用してそのメソッドを呼び出すこともできます。

于 2008-12-22T22:19:44.437 に答える
0

申し訳ありませんが、私の回答ではこれを実装する方法がわかりません。

組み込みの OS 機能を使用することを禁止し、自社製のクローンを実行できるようにするのはなぜですか?

Windowsスケジューラを安定したサービスとして再作成するよりも、それがでたらめな要件であることを顧客に納得させようとする方が簡単だと思います。既存のものを使用するだけで時間を節約できるだけでなく、おそらくより良い解決策にたどり着くでしょう。誰にとってもウィンウィンです:)

于 2008-12-25T05:10:32.297 に答える
-2

Windows サービスを正しく作成するのは非常に複雑であることを理解することが最も重要です。これは、サービスがデスクトップから分離されているため、バージョン 6 以降の製品で特に当てはまります。ここにいくつかのコメントがあります

  • サービスは、基本的なユーザー モード プログラムよりもデバッグが困難です。
  • V6 以降のオペレーティング システムでは、サービスはユーザーと対話できません。そのため、コンソールを提供したり、メッセージ ボックスを直接ポップアップさせたりすることはできません。
  • サービスとの通信は通常、リモート プロシージャ コールまたはアウト プロセス COM を介して行われます。一見ライバルに見えるものでも、どちらも複雑になる可能性があります。
  • サービスは本質的な熱意を持って実行されるため、他の実行可能ファイルよりもはるかに信頼性が高く効率的でなければなりません。
  • セキュリティ コンテキストによっては、システム内で他のことを発生させるサービスを取得するのが難しい場合があります。

サービスの代わりに、「デーモン」をお勧めします。これは、非表示のユーザー インターフェイスを持つ小さなプログラムです。他のアプリと同じように、起動時に実行するだけです。ユーザーのコンテキストで実行され、ユーザーが実行できることは何でも実行できます (これはおそらくあなたが望むことです)。必要に応じてトレイ アイコンを付けたり、他のアプリからの信号を使用してシンプルな UI を表示したりできます。

于 2008-12-25T05:19:52.717 に答える