コンソール アプリケーションでタイマーを使用するにはどうすればよいですか? たとえば、コンソール アプリケーションをバックグラウンドで動作させ、10 分ごとに何かを実行させたいと考えています。
これどうやってするの?
ありがとう
コンソール アプリケーションでタイマーを使用するにはどうすればよいですか? たとえば、コンソール アプリケーションをバックグラウンドで動作させ、10 分ごとに何かを実行させたいと考えています。
これどうやってするの?
ありがとう
コンソール アプリケーションは、必ずしも長時間実行することを意図したものではありません。そうは言っても、あなたはそれを行うことができます。コンソールが終了しないようにするには、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 サービスにすることによるオーバーヘッドを考慮してください。開発のオーバーヘッドはいくらかありますが、コードを実行するためのはるかに安定したプラットフォームが得られます。
Windows タスク スケジューラを使用して、10 分ごとにコンソール アプリケーションを実行できます。