用thread(工作线程)更新主界面的progressBar主界面设置progressBar的函数:
public void SetProgress(int min,int max,int val)
{
if(this.InvokeRequired)
{
this.Invoke(new SetProgressHandler(SetProgress),new object[]{min,max,val});
}
else
{
this.progressBar.Minimum = min;
this.progressBar.Maximum = max;
this.progressBar.Value = val;
}
}问题是,thread退出之前还会调用一次SetProgress()
然后this.Invoke(new SetProgressHandler(SetProgress),new object[]{min,max,val});
就会报错“堆栈溢出”。跟踪了一下,发现那时候thread已经退出了。
应该怎么解决呢
public void SetProgress(int min,int max,int val)
{
if(this.InvokeRequired)
{
this.Invoke(new SetProgressHandler(SetProgress),new object[]{min,max,val});
}
else
{
this.progressBar.Minimum = min;
this.progressBar.Maximum = max;
this.progressBar.Value = val;
}
}问题是,thread退出之前还会调用一次SetProgress()
然后this.Invoke(new SetProgressHandler(SetProgress),new object[]{min,max,val});
就会报错“堆栈溢出”。跟踪了一下,发现那时候thread已经退出了。
应该怎么解决呢
try{}
catch{}
SetProgress();只有当捕捉到错误了才会出现堆栈溢出。否则就没问题