0

クライアント アプリケーションがあり、MySQL サーバーに接続するとします。素晴らしい。これをスレッドとして実装しません。私は MySQLConnection クラスを利用しています。

そして今、オフィスのことを本当に無頓着な Jim が、最初に許可を求めずに誤って MySQL サーバーを再起動したとしましょう。

クライアントアプリケーションが認識し、ユーザーが多くのエラーを取得しないように、切断がいつ発生するかを知りたいです。

これを確認する方法はいくつか考えられますが、それらが機能するかどうか、またデザインがエレガントであるかどうかもわかりません。皆さんはどの方法が一番適切だとお考えだったのだろうと思いました。

  • 接続をスレッドとして実装し、x 秒ごとにチェックします (可能であれば)
  • 接続が切断されたときにイベントを作成して処理します (上記の点に依存しています)。
  • たぶん、MySQL コネクタ ライブラリに、私が気付いていないイベントが組み込まれている可能性があります。
  • 私が気付いていない他の神秘的なダークコード

どんな助けでも大歓迎です。

編集:この質問はコメントで回答されています。読んでくれてありがとう。

4

1 に答える 1

0

「たまに接続された」アプリケーションがあり、この問題に直面しました。ユーザーがネットワーク接続を持っているかどうか、もしそうなら、SQLServerデータベースに接続できるVPN接続を持っているかどうかを知る必要がありました。タイマーを使用して、データベースサーバーに1分に1回pingを実行し、到達可能性を確認しました。

    public NetworkStatus GetNetworkStatus()
    {
        NetworkStatus netStatus = new NetworkStatus();
        netStatus.NetworkAvailable = NetworkInterface.GetIsNetworkAvailable();

        try
        {
            if (netStatus.NetworkAvailable)
            {
                Ping p = new Ping();
                // Create a buffer of 32 bytes of data to be transmitted.
                string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
                byte[] buffer = Encoding.ASCII.GetBytes(data);
                PingReply reply = p.Send(DB_SERVER_NAME, 1200, buffer);
                netStatus.PublisherPingSuccess = reply.Status == IPStatus.Success;
            }
        }
        catch (Exception ex)
        {
            netStatus.PublisherPingSuccess = false;
            netStatus.Error = ex;
        } 
        return netStatus;
    }
于 2009-06-04T12:44:39.523 に答える