コンソールアプリケーションでタイマーを使用するにはどうすればよいですか?私は私のコンソールアプリケーションをバックグラウンドで動作させ、例えば10分ごとに何かをしたいと思っています。コンソールアプリケーションでタイマーを使用するにはどうすればよいですか?
どうすればいいですか?あなたは自分のコンソールアプリケーションごとに10分を実行するには、Windowsタスクスケジューラを使用することができます
おかげ
コンソールアプリケーションでタイマーを使用するにはどうすればよいですか?私は私のコンソールアプリケーションをバックグラウンドで動作させ、例えば10分ごとに何かをしたいと思っています。コンソールアプリケーションでタイマーを使用するにはどうすればよいですか?
どうすればいいですか?あなたは自分のコンソールアプリケーションごとに10分を実行するには、Windowsタスクスケジューラを使用することができます
おかげ
。
これはおそらくこれを行う最善の方法です。 –
コンソールアプリケーションは、必ずしも長時間実行されることを意味しません。それが言われている、あなたはそれを行うことができます。コンソールが終了しないようにするには、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
}
EDIT
でも、私はあなたの質問に日銀のコメントが好きです。長時間実行するアプリケーションが本当に必要な場合は、それをWindowsサービスにするオーバーヘッドを考慮してください。開発オーバーヘッドがありますが、コードを実行するためにはるかに安定したプラットフォームが得られます。
ありがとうございますが、このサンプルコードは動作しません – Gold
何が問題になりませんか?私はそれを投稿する前に私はそれをテストしました。 methodThatExecutesEveryTenMinutesにConsole.WriteLineを置き、FromMinutes(10)をFromSeconds(5)に変更して検証するだけです。 5秒ごとにコンソールに出力されます。 –
@MichaelMeadowsあなたの答えは私が探しているものですが、コンソールサービスを開いたままにしておくと、Windowsサービスはconsole.writelineなどのフィードバックを出力しません。プログラムの出力をチェックして、正常に動作していることを確認できます。それは自己報告のようなものです。 –
注意:コンソールアプリケーションを強制終了するのは非常に簡単です。このバックグラウンドジョブが重要な場合は、Windowsサービスの実装を選択します。または、Wandについてのnandosの投稿を考えてみてください。 – boj