3

Webサービスからデータを読み取る機能があります。そのデータを使用して、ビットマップを作成します。作成したビットマップを表示するパネル (ディスプレイ) にビットマップを送信します。手動では魅力のように機能します。私が今必要としているのは、アプリケーションがバックラウンドで 5 分ごとにこの関数を自動的に実行することです。

私のアプリケーションは IIS で実行されています。どうやってやるの?誰かがそれを手伝ってくれますか?

4

2 に答える 2

3

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); }
    }
}
于 2013-02-19T08:44:19.193 に答える
3

Asp.Net アプリケーションは、このようなタスクに適したフレームワークではありません。

おそらく、このタイプのタスク専用のサービスを作成する必要があります。

もう 1 つのオプションは、X 分ごとに実行されるスケジュールされたタスクを作成することです。

余談ですが、asp.net アプリケーションでこれを行う必要がある場合は、ASP.NET を使用して Windows サービスをシミュレートし、スケジュールされたジョブを実行する方法を読むことをお勧めします。

于 2013-02-19T08:11:25.750 に答える