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();
}我用线。但几分钟后就出了差错。单击按钮是exitThread使之成为真。5分钟后,给出一个StackOverflowException未处理的HResult=-2147023895错误。
谢谢你帮忙。
发布于 2014-08-30 14:33:05
您递归地调用serialcek()而不停止,并由此导致堆栈溢出。
附注:使用最后和try\catch防止代码重复:
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();
}
}https://stackoverflow.com/questions/25583393
复制相似问题