创建窗口句柄时出错

Ale*_*lex 1 c# winforms

我写了一个客户端 - 服务器c#app并让它整晚运行,当我想看它是否仍在工作时我发现服务器上有错误.不幸的是,应用程序是很大的粘贴在一些代码,但我得到一个错误

Application.Run(form1中)

在program.cs中说 替代文字

前两个消息框可以忽略(从左到右),因为它们应该显示,但另一个消息

代表buton无法执行

来自此代码并且mai参与了此错误(此代码位于form1.cs中):

public void setButonState(inout_buton b, bool t, int q,int contor)
        {
            try
            {
                if (b.InvokeRequired)
                {
                    Callback d = new Callback(setButonState);
                    this.Invoke(d, new object[] { b, t, q, contor });
                }
                else
                {
                    b.Enabled = t;
                    if (q == 0) b.setBackgroundGrey();
                    if (q == 1) b.setBackgroundGreen();
                    if (q == 2) b.setBackgroundRed();
                    if (q == 3) b.setBackgroundOrange();

                    b.setSecondaryLabel(contor);

                }
            }
            catch { new ShowMessageBox("FORM1 : delegate buton couldn't be executed"); }

        }
Run Code Online (Sandbox Code Playgroud)

我的问题是:这些错误在什么条件下显示?

Han*_*ant 10

使用Taskmgr.exe,Processes选项卡进行诊断.查看+选择列并勾选USER对象.在进程运行时观察该进程的值.它应该稳步攀升.当它达到10,000时,你的程序将使用此异常进行轰炸.

这是因为没有在您自己从Controls集合中删除的控件上调用Dispose(),无论是通过调用Remove()还是Clear().