タイマーイベント

ネットワークプログラミングに悪戦苦闘中。
サーバープログラムがLANの物理切断を認識してくれないので、
タイマーイベントを使って、pingを一定時間飛ばし続け、失敗したら
クライアント切断でうまくいった!

        /// <summary>
        /// 指定した時間でタイマーを開始する
        /// </summary>
        /// <param name="intInterval">指定時間(ミリ秒)</param>
        private void SettingTimer(int intInterval)
        {
            timer = new System.Timers.Timer();
            timer.Elapsed += new ElapsedEventHandler(ConnectCheckTimer);
            timer.Interval = intInterval;
            timer.AutoReset = true;
            timer.Enabled = false;
        }

        /// <summary>
        /// 接続確認タイマー
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ConnectCheckTimer(object sender, ElapsedEventArgs e)
        {
            try
            {
                System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
                System.Net.NetworkInformation.PingReply reply;
                reply = p.Send(ipClient.ToString());

                //pingを送信して、接続を維持しているか確認。
                if (reply.Status != System.Net.NetworkInformation.IPStatus.Success)
                {
                    timer.Stop();
                    //切断しているので、ストリームを強制クローズ。
                    ns.Close();
                }
            }
            catch (Exception ex)
            {
                this.FrmParent.Invoke(new dlgSetLog(FrmParent.SetLogText), "接続確認エラー:"+ ex.Message);
            }

        }

参考:タイマにより一定時間間隔で処理を行うには?(サーバベース・タイマ編) − @IT