2012-04-27 5 views
0

私は3秒ごとに起動するように設定されている私のWebアプリケーション用のスケジューラを作成しました。私はConsole.Write( "bob")を使用して、スケジューラが正常に動作しているかどうかを確認しますが、何も起こらず、「デバッグ」ボタンをクリックした後でWebページのみが作成されます。間違った方法をテストしていますか、スケジューラが実際に動作していませんか?ASP.Net WebアプリケーションのWindowsサービススケジューラをテストするには?

ここで私が書いたコードは次のとおりです。事前に

namespace Scheduler 
{ 
    public partial class CheckExpireService : ServiceBase 
    { 
     private CheckExpireJob job; 
     private Timer stateTimer; 
     private TimerCallback timerDelegate; 


     public CheckExpireService() 
     { 
      InitializeComponent(); 
     } 

     protected override void OnStart(string[] args) 
     { 
      job = new CheckExpireJob(); 
      timerDelegate = new TimerCallback(job.CheckExpireApplicants); 
      stateTimer = new Timer(timerDelegate, null, 1000, 3000); 
     } 

     protected override void OnStop() 
     { 
      stateTimer.Dispose(); 
     } 
    } 
} 


namespace Scheduler 
{ 
    class CheckExpireJob: ServiceBase 
    { 
     public void CheckExpireApplicants(object stateObject) { 
     Console.Write("bob"); 
     } 
    } 
} 

おかげで!!

答えて

1

(私はコメントを残すつもりだったが、編集、答えは私が用意しているように見えるだけのものです。)

まず、私はあなたがデバッグモードでWindowsサービスを実行することができるとは思いません。.. .itはコンパイルされ、サービスとしてインストールされ、Windowsのサービスマネージャーで開始および停止されなければなりません。このコードをWebアプリケーションのどこかに置いても、動作しません。それは別々のプロジェクトである必要があります。

第2に、このようなサービスを構築して呼び出すことはできません。一定の時間間隔で何かをするサービスが必要な場合は、サービス内にタイマーとそのすべての処理を持たせる必要があります。

ウェブアプリケーションをスケジュールすることはできません。誰かがそのページにアクセスしたときに実行されます。あなたは本当にスケジュールを設定する必要がありますか? Webアプリケーションが引き出すデータの定期的な更新?

助けを求めて何を達成しようとしているかについて詳しく知る必要があります。

+0

こんにちはKennyZ、私はデータベースを更新したいです。期限切れの応募者を毎日削除します。私は私のWebアプリケーションプロジェクトと一緒に別のプロジェクトとして 'スケジューラ'を作成しました。私はこれらの情報が私がデュオにしようとしていることのより良い理解を助けることを願っています –

+0

それはベストプラクティスと見なされるかどうかわかりませんが、私にとっては、サービス。 Windowsサービスのインストールを検索する前に、そのサービスを起動することもできます。 – KennyZ

+0

それから、コンソールへの書き込みは問題のトラブルシューティングのためには機能しません。私が示唆できる最も簡単なアイデアは、テストサービスがC:\ TestFolderのようなあなたが見ることができるディレクトリにファイルを作成させることです。その後、そのフォルダを開いた状態でサービスをインストールして起動し、ファイルが作成されているかどうかを確認します。 – KennyZ

関連する問題