1

コンソール アプリケーションでタイマーを使用するにはどうすればよいですか? たとえば、コンソール アプリケーションをバックグラウンドで動作させ、10 分ごとに何かを実行させたいと考えています。

これどうやってするの?

ありがとう

4

2 に答える 2

4

コンソール アプリケーションは、必ずしも長時間実行することを意図したものではありません。そうは言っても、あなたはそれを行うことができます。コンソールが終了しないようにするには、Console.ReadLine でコンソール ループを実行して、"quit" などの終了文字列を待機する必要があります。

コードを 10 分ごとに実行するには、System.Threading.Timer を呼び出して、10 分間隔で実行メソッドを指定します。

public static void Main(string[] args)
{
    using (new Timer(methodThatExecutesEveryTenMinutes, null, TimeSpan.FromMinutes(10), TimeSpan.FromMinutes(10)))
    {
        while (true)
        {
            if (Console.ReadLine() == "quit")
            {
                break;
            }
        }
    }
}

private static void methodThatExecutesEveryTenMinutes(object state)
{
    // some code that runs every ten minutes
}

編集

ただし、あなたの質問に対する Boj のコメントは気に入っています。実行時間の長いアプリケーションが本当に必要な場合は、それを Windows サービスにすることによるオーバーヘッドを考慮してください。開発のオーバーヘッドはいくらかありますが、コードを実行するためのはるかに安定したプラットフォームが得られます。

于 2009-04-16T21:24:41.973 に答える
2

Windows タスク スケジューラを使用して、10 分ごとにコンソール アプリケーションを実行できます。

于 2009-04-16T21:16:18.077 に答える