私はIPアドレスの長いリストをpingするプログラムに取り組んでいます。現在pingを実行するにはデータベース内に約250があり、それらすべてを処理するには長い時間がかかります。プログラムはまた、そのステータスが変化したときにEメールアラートを送信します(失敗から成功、またはその逆)。最悪の場合、各pingに2秒かかります(失敗した場合)。そのため、プログラム全体が循環するのに通常8分ほどかかります。
可能であれば、電子メールアラートをリアルタイムに近づけるようにしてください。 ping関数を非同期的に呼び出すことで、それ以前のものからの応答を待たずに、より早く起動できるようになるでしょうか。私はどんな種類の非同期プログラミングにも慣れていません、そしてこれがそれを使用するのに適切な状況であるかどうか私にはわかりません。
もしそうなら、これを始めるためのリソースへのどんなポインタも大いに感謝されるでしょう!
ネットワークは1秒以下で250回のping送信をサポートするべきです。非同期IOを使ってすべてのpingを一度に開始してから、Task.WaitAll
結果を集める。そうすればあなたは2秒以内に完了します。
250の作業項目があるので、非同期IOを使用するソリューションを強くお勧めします。お望みならスレッドも使用できます。
非同期メソッドが何であるかを調べますPing
クラスが提供します。について学ぶasync/await
そしてTask
。これは彼らにとって良いユースケースです。