C# StackOverflowException未经处理HResult=-2147023895
我用线。但几分钟后,这是一个错误。单击按钮是exitThread make true。5分钟后,出现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) {
谢谢您的帮助。您的调用
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();
}
}