C# StackOverflowException未经处理HResult=-2147023895

C# StackOverflowException未经处理HResult=-2147023895,c#,stack-overflow,hresult,unhandled,httpunhandledexception,C#,Stack Overflow,Hresult,Unhandled,Httpunhandledexception,我用线。但几分钟后,这是一个错误。单击按钮是exitThread make true。5分钟后,出现StackOverflowException未处理的HResult=-2147023895错误 谢谢您的帮助。您的调用serialcek()会在不停止的情况下递归执行,从而导致堆栈溢出 注意:与try\catch一起使用可防止代码重复: public void serialcek() { while (!exitThread) {

我用线。但几分钟后,这是一个错误。单击按钮是exitThread make true。5分钟后,出现StackOverflowException未处理的HResult=-2147023895错误


谢谢您的帮助。

您的调用
serialcek()
会在不停止的情况下递归执行,从而导致堆栈溢出

注意:与
try\catch
一起使用可防止代码重复:

public void serialcek()
    {

            while (!exitThread)
            {
                foreach (ManagementObject currentObject in theSearcher.Get())
                {

                    try
                    {
                        textBox1.Text = currentObject["Size"].ToString() + " " + currentObject["PNPDeviceID"].ToString();
                        currentObject.Dispose();

                    }
                    catch (Exception)
                    {
                        //    MessageBox.Show("Bişiler oldu bende anlamadım");
                        currentObject.Dispose();
                        //exitThread = false;
                    }
                }

            }
            Thread.Sleep(100);
            serialcek();
        }
public void serialcek()
{
而(!exitThread)
{
foreach(seCharter.Get()中的ManagementObject-currentObject)
{
尝试
{
textBox1.Text=currentObject[“Size”].ToString()+“”+currentObject[“PNPDeviceID”].ToString();
}
捕获(例外)
{
//MessageBox.Show(“Bişiler oldu Bend anlamadım”);
//exitThread=false;
}
最后
{
currentObject.Dispose();
}
}
}
睡眠(100);
if()//在此处添加您的条件
{
serialcek();
}
}

因为您递归调用serialchek(),没有退出条件。
public void serialcek()
{

        while (!exitThread)
        {
            foreach (ManagementObject currentObject in theSearcher.Get())
            {
                try
                {
                    textBox1.Text = currentObject["Size"].ToString() + " " + currentObject["PNPDeviceID"].ToString();
                }
                catch (Exception)
                {
                    // MessageBox.Show("Bişiler oldu bende anlamadım");
                    //exitThread = false;
                }
                finally
                {
                   currentObject.Dispose();
                }
            }
        }
        Thread.Sleep(100);

        if(<condition>) // add your condition here
        {
           serialcek();
        }
    }