多线程,调用其他线程控件问题

流言蜚语 2009-12-24 12:56:03
异常描述:由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值。

private void builder_BuildProgressChanged(System.Int32 progress, System.String state)
{
if (this.lvwInstance.InvokeRequired)
{
this.lvwInstance.Invoke(this.SetInstanceState, new System.Object[] { progress as System.Object, state as System.Object }); // 该行报异常:NullReferenceException
}
else
{
this.SetInstanceState(progress, state);
}
if (this.pgbBuild.InvokeRequired)
{
this.pgbBuild.Invoke(this.SetProgress, new System.Object[] { (progress + 1) as System.Object });
}
else
{
this.SetProgress(progress + 1);
}
}

private delegate void SetInstanceCallBack(System.Int32 index, System.String state);
private SetInstanceCallBack SetInstanceState;
private delegate void SetProgressCallBack(System.Int32 progress);
private SetProgressCallBack SetProgress;

private void _SetInstanceState(System.Int32 index, System.String state)
{
this.lvwInstance.Items[index].SubItems["colState"].Text = state;
}

private void _SetProgress(System.Int32 progress)
{
if (progress < 0)
{
this.pgbBuild.Value = 0;
}
else if (progress > this.pgbBuild.Maximum)
{
this.pgbBuild.Value = this.pgbBuild.Maximum;
}
else
{
this.pgbBuild.Value = progress;
}
}

报的是空引用异常,但是所有控件均有值,个人怀疑是ListView中的ListViewItem问题。
求异常原因和解决方案。
...全文
80 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧