2012-02-28 6 views
2

ほとんどの場合バックグラウンドで実行されるC#でアプリケーションを作成したいと思います。 TrayIconが表示されます。これについて私はチュートリアルを見つけました:http://www.simple-talk.com/dotnet/.net-framework/creating-tray-applications-in-.net-a-practical-guide/バックグラウンドで実行され、毎時アクションを実行するプログラムを作成します。

しかし、1時間ごとにプログラムを実行するにはどうすればいいですか?これを実装する最良の方法は何ですか?タイマー?アプリは何もしないうちにできるだけ少ないリソースを使用する必要があります。

おかげ

+0

[.NETプログラムを自動的に実行する方法、毎時間]の可能な複製(http://stackoverflow.com/questions/2421252/how-to-run-a-net-program-automatically-every-hour ) – ChrisF

答えて

2

質問:「ユーザースペース」プログラムを実行しているプログラム、またはユーザーがログインしていなくても実行する必要がありますか?言い換えれば、それは常にあるべきですか?

基本的には、ユーザーにとって有用なことをやっているのですか?これは、Webサーバーのログファイルをデータベースにアーカイブするなどのビジネスタスクのためですか?

前者の場合は、通知領域プログラムを続けてください。後者の場合は、通知領域プログラムをスキップし、フルアウトのWindows Serviceを作成します。

どちらの場合も、タイマーを使用してください。リソースの使用は最小限に抑えられます。

+0

はい、常に実行してユーザーのログインに反応する必要があります。 タイマーに.Net Timerクラスを使用できますか? – Pascal

+0

ユーザーログインに反応することはどういう意味ですか?私はあなたがすべてを明らかにしたくないかもしれないことを理解していますが、何をしようとしていますか? **編集**また、あなたのWindowsサービスは、[OnSessionChange](http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onsessionchange.aspx)をオーバーライドすることでログインを検出できるはずです – Randolpho

+0

I cpu model、ram、graphic ....のようなコンピュータに関するすべての情報を取得するプログラムを書く必要があり、ユーザのログインとユーザのログアウトを記録する必要があります。また、ユーザーがアプリでメッセージを作成できるようにする必要があります。 – Pascal

8

は、すべての時間を実行するプログラムを持っていないだけの活動では、毎時間実行されます。アクティビティを実行し、Task Scheduler in windowsを使用して1時間ごとにスケジュールするプログラムを作成します。

+0

私が提案しようとしているもの – Schwarzie2478

+0

これは、その時間中に実際には実行されていないので、アクティビティを実行していない間にアプリケーションがリソースを消費しないという利点があります。 – ChrisF

+0

ですが、アプリケーションはユーザーに対話する可能性があります。アプリケーションはファイルシステムの変更やユーザーがログオンまたはログオフしたときに応答する必要があります。 – Pascal

0

処理コストはわかりませんが、スリープタイマーでループして1時間スリープ状態にすると、起床して実行してからスリープするためにスリープタイマーでコード化することができます。眠っているときに資源がなくなっているかどうかは分かりません。また、プログラムに数分かかる場合は、DateTime.Now DateTimeオブジェクトに基づいてスリープ時間を計算して、1時間ごとに1時間ごとに起きるようにすることもできます。

関連する問題