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变为true。超过5分钟后,给出了一个StackOverflowException未处理的HResult = -2147023895错误。
感谢帮助。
您的调用会serialcek()
递归地进行,而不会停止,从而导致堆栈溢出。
PS最终使用withtry\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();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句