关闭UDP套接字,将MDI子关闭到父级

时间:2016-06-30 23:39:53

标签: c# sockets

我有2个Mdi子窗体(form2和form3),它在父窗口(form1)中打开,在一个子窗体(form3)上打开我有一个UDP套接字,当我从父窗口打开另一个子窗体(form2)时UDP套接字保持打开状态,“在表单关闭”事件处理程序不会触发,因为我没有正确退出子进程,所以当我重新打开它时,我得到错误“每个套接字地址只有一次使用(协议/网络地址/端口)通常是允许的“即使Parent可以检测到孩子正在关闭,它如何关闭仅在子(form3)上可用的套接字(udpClient.Close();)。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        if (ActiveMdiChild != null)
            ActiveMdiChild.Close();
        panel1.Controls.Clear();
        panel1.Invalidate();

        Form2 newMDIChild = new Form2();

        newMDIChild.TopLevel = false;
        newMDIChild.AutoScroll = true;
        this.panel1.Controls.Add(newMDIChild);
        newMDIChild.Show();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        if (ActiveMdiChild != null)
            ActiveMdiChild.Close();
        panel1.Controls.Clear();
        panel1.Invalidate();
        Form3 newMDIChild = new Form3();
        newMDIChild.TopLevel = false;
        newMDIChild.AutoScroll = true;
        this.panel1.Controls.Add(newMDIChild);
        newMDIChild.Show();
        Form3 mdiChild = new Form3();
   }
}

上面的代码只清除前一个子节点的面板,但在面板上打开一个新子节点之前,没有在特定子节点上打开的任何套接字或com端口。

0 个答案:

没有答案