Webサービスからデータを読み取る機能があります。そのデータを使用して、ビットマップを作成します。作成したビットマップを表示するパネル (ディスプレイ) にビットマップを送信します。手動では魅力のように機能します。私が今必要としているのは、アプリケーションがバックラウンドで 5 分ごとにこの関数を自動的に実行することです。
私のアプリケーションは IIS で実行されています。どうやってやるの?誰かがそれを手伝ってくれますか?
asp.netプロジェクトに依存する必要はありませんが、それを使用Cache Callback
して行うことができます。私はそれを行うための素晴らしいアプローチを見つけました。実際にはリンクを覚えていないので、使用するコードを提供します。
public abstract class Job
{
protected Job()
{
Run();
}
protected abstract void Execute();
protected abstract TimeSpan Interval { get; }
private void Callback(string key, object value, CacheItemRemovedReason reason)
{
if (reason == CacheItemRemovedReason.Expired)
{
Execute();
Run();
}
}
protected void Run()
{
HttpRuntime.Cache.Add(GetType().ToString(), this, null,
Cache.NoAbsoluteExpiration, Interval, CacheItemPriority.Normal, Callback);
}
}
Here is the implementation
public class EmailJob : Job
{
protected override void Execute()
{
// TODO: send email to whole users that are registered
}
protected override TimeSpan Interval
{
get { return new TimeSpan(0, 10, 0); }
}
}
Asp.Net アプリケーションは、このようなタスクに適したフレームワークではありません。
おそらく、このタイプのタスク専用のサービスを作成する必要があります。
もう 1 つのオプションは、X 分ごとに実行されるスケジュールされたタスクを作成することです。
余談ですが、asp.net アプリケーションでこれを行う必要がある場合は、ASP.NET を使用して Windows サービスをシミュレートし、スケジュールされたジョブを実行する方法を読むことをお勧めします。