首页 > 解决方案 > 如何在添加更多按钮的同时停止 foreach 循环然后我突然关闭表单而没有错误:无法访问已处置的对象?

问题描述

我正在创建一个带有流面板布局的房间管理表单,添加了 410 个按钮,我使用Thread一个接一个地查看添加的按钮。问题是当我点击右上角的X按钮时,程序在MethodInvoker报错:

“ObjectDisposedException 未处理”

System.Windows.Forms.dll 中出现“System.ObjectDisposedException”类型的已处理异常

附加信息:无法访问已处置的对象。

关闭表单时如何停止 foreach 循环?目前我只在关闭时隐藏该表单,以免出现错误。

我的代码:

public fPhong()
        {
            InitializeComponent();
            load();
        }

        void load()
        {
            Thread thr = new Thread(loadPhongList);
            thr.IsBackground = true;
            thr.Start();
        }

        void loadPhongList()
        {
            List<phong> phongList = phongDAO.Instance.phong();

            foreach (phong item in phongList)
            {
                    Button bt = new Button() { Width = phongDAO.phongWidth, Height = phongDAO.phongHeight };
                    if (item.SONGUOIDANGO == 0)
                    {
                        bt.Text = item.MAPHONG + Environment.NewLine + "Trống";
                        bt.BackColor = Color.AliceBlue;
                    }
                    else
                        if (item.SONGUOIDANGO > 0 && item.SONGUOIDANGO < item.SLTD)
                    {
                        bt.Text = item.MAPHONG + Environment.NewLine + "Có người";
                        bt.BackColor = Color.Aquamarine;
                    }
                    else
                    {
                        bt.Text = item.MAPHONG + Environment.NewLine + "Đầy";
                        bt.BackColor = Color.Red;
                    }
                    bt.Click += Bt_Click;
                    bt.Tag = item;

                    Thread.Sleep(5);
                    if (flpPhong.InvokeRequired)
                    {
                        flpPhong.Invoke(new MethodInvoker(delegate () { flpPhong.Controls.Add(bt); }));
                    }
            }
        }
void Bt_Click(object sender, EventArgs e)
{
        string maphong = ((sender as Button).Tag as phong).MAPHONG;
        loadTT(maphong);
}

标签: winforms

解决方案


推荐阅读