C# アプリ (Win7 64) にタイマーがあります。タイマー コールバックは 20 分ごとに HTTP 経由でデータを取得します。それはうまくいきます。しかし、PC が数時間スリープ状態になってから復帰すると、「サーバーが見つかりません」という HTTP エラーが表示されます。サーバーは常に稼働しているため、実際の問題ではありません。本当の理由は、スリープ期間中にタイマーコールバックが「タイムスロット」を逃したため、「期限切れ」になり、PCがインターネット接続を再確立するのを待たずに、ウェイクアップ直後に即座に実行されるためだと思います. コールバックの最初にThread.Sleep(5000)を追加することで問題を解決できますが、これは少し手間がかかります (インターネット接続の確立には時間がかかる場合があります)。私の質問:
スリープ モードから復帰した後、Win がインターネット接続を再確立するのに数秒かかりますか? 私の接続は DSL、「常にオンライン」です。
Win がインターネット接続を確立するまで (または、たとえば 20 秒以内に確立されない場合はタイムアウトになるまで) 待機する C# システム コールはありますか?
編集:ちょうどこれを見つけました: Check Net connection in C# . 思ったほど単純ではありませんが、一連のチェックが必要です。すべてのLAN 接続、DNS ルックアップ (LAN 外)、サーバーへの ping (特定のサーバーのチェック) です。