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