1

新しい値がある場合は、定期的にリモートデータベースをリッスンするコンソールアプリケーションがあり、いくつかのことを行います。

通常、このコンソール アプリを 2 分ごとに実行する Windows タスク スケジューラ ジョブを作成します。別のオプションだと思いますが、コンソールアプリでは次のようなコードがあります。

while(true)
{
  ConnectDatabaseAndProcess();
  System.Threading.Thread.Sleep(120000);
}

したがって、コンソールアプリは常に開いていると想定し、すべてのプロセスを2分間待ってから続行します。パフォーマンスの問題では、違いはありますか?

4

1 に答える 1

2

2 分ごとにプロセスを作成する時間がリソースを大量に浪費するほどコンピューターが過負荷になっている場合を除き、データベースをポーリングできるようにするためだけに、プログラムを 2 分間ループさせても何のメリットもありません。

スケジュールされたタスクを使用する利点は、プログラムを変更することなく、スケジュールされたタスクの頻度を変更できることです (5 分に 1 回、1 時間に 1 回など)。確かに、アプリケーション構成ファイルを使用できますが、なぜでしょうか? オペレーティング システムに既に存在し、より柔軟な機能を複製する理由。

また、スケジュールされたタスクを使用すると、次回コンピューターを再起動したときに、プログラムがポーリング操作を再開することがわかります。その遅延を提供するプログラムに依存している場合は、毎回プログラムを開始することを忘れないか、開始タスク リストに追加する必要があります。

また、プログラムがアイドル状態にあるときは、他のプロセスが使用できるメモリを占有しています。

全体として、スケジュールされたタスクを使用することは、はるかに柔軟で堅牢なソリューションです。プログラムを常に実行することによるわずかなパフォーマンスの向上 (最大でも 1 秒) よりも、デメリットの方がはるかに重要です。

于 2013-01-30T19:30:05.987 に答える