当前位置:编程学习 > C#/ASP.NET >>

在线等,着急啊。。。关于局域网qq关闭窗体后,为什么进程不结束的问题

关闭窗体后,任务管理器里面还有MyQQ的进程。到底是怎么回事啊。。。

namespace MyQQ
{
    public partial class Form1 : Form

    {
        private IPEndPoint ServerEndPoint = null;
        private UdpClient UDP_client = new UdpClient();
        private UdpClient UDP_server = new UdpClient();
        private System.Threading.Thread theUdp;
        private delegate void DataArrivaldelegate(byte[] Data, System.Net.IPAddress Ip, int Port);

        private int localPort = 11000;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Listener();
        }

        private void Send_Click(object sender, EventArgs e)
        {
            IPAddress ip = IPAddress.Parse(IPtextbox.Text);
            if (IPtextbox.Text.Length <= 0)
            {
                MessageBox.Show("请输入IP地址!");
                IPtextbox.Focus();
                return;
            }


            string port = "11000";
            byte[] Data = Encoding.Unicode.GetBytes(TextIn.Text);

            try
            {
                IPEndPoint server = new IPEndPoint(ip, int.Parse(port));
                UDP_client.Send(Data, Data.Length, server);
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.ToString());
            }
            TextOut.SelectionStart = 0;
            if (TextOut.Text.Length > 0)
                TextOut.AppendText("\r\n");
            TextOut.AppendText("");
            TextOut.AppendText("" + DateTime.Now.ToString());
            TextOut.AppendText("\r\n");
            TextOut.ScrollToCaret();
            TextOut.SelectedRtf = TextIn.Rtf;
            TextIn.Clear();
        }

        
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (UDP_server != null)
                UDP_client.Close();
            if (theUdp != null)
            {
                Thread.Sleep(30);
                theUdp.Abort();
            }
        }

        protected void Listener()
        {
            ServerEndPoint = new IPEndPoint(IPAddress.Any, localPort);
            if (UDP_server != null)
                UDP_server.Close();
            UDP_server = new UdpClient(localPort);
            UDP_server.Client.ReceiveBufferSize = 10000;
            UDP_server.Client.SendBufferSize = 10000;

            try
            {
                theUdp = new Thread(new ThreadStart(GetUDPData));
                theUdp.Start();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }

        }
        private void GetUDPData()
        {
            while (true)
            {
                try
                {
                    byte[] Data = UDP_server.Receive(ref ServerEndPoint);
                    if (Data.Length > 0)
                    {
                        DataArrivaldelegate outdelegate = new DataArrivaldelegate(DataArrival);
                        this.BeginInvoke(outdelegate, new object[] { Data, ServerEndPoint.Address, ServerEndPoint.Port });
                    }
                    Thread.Sleep(0);
                }
                catch { }
            }

        }

        private void DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port) //当有数据到达后的处理进程
        {
            TextOut.SelectionStart = 0;
            if (TextOut.Text.Length > 0)
                TextOut.AppendText("\r\n");

            TextOut.AppendText("" + DateTime.Now.ToString());
            TextOut.AppendText("\r\n");
            TextOut.AppendText(Encoding.Unicode.GetString(Data));
            TextOut.ScrollToCaret();
        }

       



    }
} --------------------编程问答-------------------- application.exit --------------------编程问答-------------------- 还说什么每个套接字地址(协议/网络地址/端口)只允许使用一次。。
本人太菜了,咋整哦??? --------------------编程问答-------------------- 试过application.exitz(),没用 --------------------编程问答-------------------- UDP_server = new UdpClient(localPort);

好像就是这里错的,调试的时候这里显黄色,说:::还说什么每个套接字地址(协议/网络地址/端口)只允许使用一次
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,