1

私はIPアドレスの長いリストをpingするプログラムに取り組んでいます。現在pingを実行するにはデータベース内に約250があり、それらすべてを処理するには長い時間がかかります。プログラムはまた、そのステータスが変化したときにEメールアラートを送信します(失敗から成功、またはその逆)。最悪の場合、各pingに2秒かかります(失敗した場合)。そのため、プログラム全体が循環するのに通常8分ほどかかります。

可能であれば、電子メールアラートをリアルタイムに近づけるようにしてください。 ping関数を非同期的に呼び出すことで、それ以前のものからの応答を待たずに、より早く起動できるようになるでしょうか。私はどんな種類の非同期プログラミングにも慣れていません、そしてこれがそれを使用するのに適切な状況であるかどうか私にはわかりません。

もしそうなら、これを始めるためのリソースへのどんなポインタも大いに感謝されるでしょう!


  • 生のソケットを使用して独自のPingerクラスを書く場合は、ping要求を送信するためと受信用に2つのスレッドを使用できます。そのようにして、あなたは数秒でマシンの一時停止をpingすることができます... - L.B
  • ウェブかウィンドウ? bcuzはあなたが使っているものに大きく依存しますか? - Amit Joki
  • これはWindowsサービスです - eddie_cat
  • どこで実行されますかWebサーバーでもPCでも。 - Amit Joki
  • こんにちは、私は120のバックグラウンドスレッドを実行するアプリケーションを持っています。各スレッドはソケット経由でリモートデバイス(TCP)に接続します。 250スレッドも受け入れられると思います。それを試してみてください。 - ilansch

1 답변


1

ネットワークは1秒以下で250回のping送信をサポートするべきです。非同期IOを使ってすべてのpingを一度に開始してから、Task.WaitAll結果を集める。そうすればあなたは2秒以内に完了します。

250の作業項目があるので、非同期IOを使用するソリューションを強くお勧めします。お望みならスレッドも使用できます。

非同期メソッドが何であるかを調べますPingクラスが提供します。について学ぶasync/awaitそしてTask。これは彼らにとって良いユースケースです。


  • ありがとう、これは私が尋ねていたものです。 - eddie_cat

リンクされた質問


関連する質問

最近の質問