3

私が取り組んでいるプロジェクトでは、特定の時間にいくつかの実行を行う必要があります。この状況に対処する最善の方法が何であるかはわかりません。メソッドは、サーバーの再起動/メンテナンスに耐えられる必要があります。また、メソッド呼び出しはプログラムで行う必要があります。

私はこの道を進むことを検討しています:

TaskID(PK)、TaskName(varchar)、TaskStatus(enum success、failed、scheduled)、および TimeOfExecution を持つことができる TaskTable と呼ばれるデータベース (またはメッセージ キュー) にテーブルを作成できます。しかし、実行されていないタスクについて定期的にデータベースをポーリングする Windows サービスが必要です。私が直面している問題は、データベースに保存するための TaskName として何を使用するかということです。クラス名?クラスとメソッド名 ToString? また、文字列を変換してプログラムでメソッド呼び出しを呼び出すにはどうすればよいですか (巨大な switch ステートメントは必要ありません)。典型的なタスクは以下のようになります。そのため、タスクの名前「SendIncompleteNotification」とクラス名を取得してデータベースに保存し、取得時にプログラムで呼び出すことができるようにする必要がありました

public static Task<string> SendIncompleteNotification
{
  get
    {
      return new Task<string>
        (
          a => Console.WriteLine("Sample Task")
          , "This is a sample task which does nothing."
        );
   }
}

現在の問題は、メソッド/プロパティ名をプログラムで保存する際に問題が発生していることです。

var type = ApplicationTask.SendIncompleteNotification.GetType();
//type.Name shows "Task`1" rather than SendIncompleteNotification

この状況に対処するためのより良い方法はありますか? ありがとう!

更新: 申し訳ありませんが頭がぐるぐる回っていました。私が間違っていたのは、タスクを返す別のメソッド/プロパティを持つことであることに気付きました。私がすべきだったのは、タスクから新しいクラスを継承させることでした。そして、クラス名を簡単に取得して文字列を db に保存し、後で元に戻して呼び出すことができます。

4

4 に答える 4

3

Windows Workflow を調べることをお勧めします。私の知る限り、それらは長時間実行されるプロセス用に設計されており、データベースに永続化し、イベントまたはタイマーで起動できます。

于 2009-03-26T03:27:49.773 に答える