private void McuControl_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                if (serverThread != null)
                {
                    if (serverThread.IsAlive)
                    {
                        ResetMcu();
                        mcuControlFlag = false;
                    }
                }
            }
            catch (ThreadAbortException ex)
            {
                MessageBox.Show(ex.ToString() + "FormClosing");
            }
        }
        private void ResetMcu()
        {
            try
            {
                //connMcuF.getIPAddrCount()的值是3,按理说应该执行两次的,只执行的一次,另外一次是不是窗体关闭              //得太快了都来不及执行了?请问该怎么处理?
                for (int i = 1; i < connMcuF.getIPAddrCount(); i++)
                {
                    MessageBox.Show(i.ToString());
                    string sqlSocketNo = "select SocketNo From Room Where IPAddress = '" + connMcuF.getItemText(i) + "'";
                    SqlDataReader SocketNoReader = G_SqlExecute.GetReader(sqlSocketNo);
                    if (SocketNoReader.Read())
                    {
                        int SocketNo = Convert.ToInt32(SocketNoReader.GetValue(0));
                        MoniterVarValue(SocketNo, "已经发送重启命令给:" + connMcuF.getItemText(i));
                        clientSoc[SocketNo].SendData("58 90 01 5D D3 0D 0A");
                        clientSoc[SocketNo].Soc.Shutdown(SocketShutdown.Both);
                        clientSoc[SocketNo].CloseSocket();
                    }
                    SocketNoReader.Close();
                }
                connMcuF.Close();
            }
            catch (ThreadStartException e)
            {
                MessageBox.Show(e.ToString());
            }
            finally
            {
                serverThread.Abort();
            }
        }

解决方案 »

  1.   

    问题如下:
    connMcuF.getIPAddrCount()的值是3,按理说应该执行两次的,
    只执行的一次,另外一次是不是窗体关闭得太快了都来不及执行了?
    请问该怎么处理?
      

  2.   

    晕,确实是异常引起的!所以他最后执行了serverThread.Abort();
    谢了,我把connMcuF.getIPAddrCount()替换成3,就会有异常提示!呵呵。
    结贴!