0

私は、これを処理する可能性と最善の方法に少し圧倒されています. タイマーを実行する Windows Azure でホストされている Web サービスが必要です。経過時間が経過すると、外部 Web サービスにクエリを実行し、取得したデータを処理して SQL Azure データベースにインポートします。現在、Windows Azure で WCF Web サービスと Web サイトを SQL Azure データベースと共にホストしています。ワーカー ロールを試してみましたが、タイマーを追加して間隔を空けてタイマーを開始しても、それは 1 回だけ実行され、Run メソッドの終了後に終了します。最良の解決策を高く評価します!ありがとう。

4

1 に答える 1

2

秘訣は、ワーカーの役割が「実行」メソッドから出てこないようにすることです。何かのようなもの:

    public override void Run()
    {
        while (true)
        {
            Thread.Sleep(10000);
        }
    }

ここで質問になりますが、ワーカーロールにTimerオブジェクトを実装するだけで、タイマーが経過すると、その外部Webサービスを呼び出すことができます。次のコードを使用して、独自のタイマーを実装できます。

    public override void Run()
    {
        System.Timers.Timer timer = new System.Timers.Timer(1000);
        timer.Elapsed += timer_Elapsed;
        while (true)
        {
            Thread.Sleep(10000);
        }
    }

    void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        //Execute the code to call the web service
    }

ただし、タイマーを実装するための私のお気に入りは、Quartzライブラリ(http://quartznet.sourceforge.net/)です。かなり使いやすく、非常に柔軟性があり、オープンソースであることがわかりました。

お役に立てれば。

于 2013-01-01T11:42:15.930 に答える