if (this.InvokeRequired)
{
SetPos sps = new SetPos(SetTextMessage);
this.Invoke(sps, new object[] {pos});
}
else
{
this.lshowNum.Text = pos.ToString() + "/100";
this.progressBar1.Value = Convert.ToInt32(pos);
}
比如上面这段代码,我的理解是:属性InvokeRequired就是表示当前form的空间是否可以被当前线程所访问,如果是就直接访问,不过不是就用委托访问,可上面的代码为什么正好和我的理解相反呢,上面的好像是这样:如果InvokeRequired为true就用委托访问,如果InvokeRequired为false就直接访问。请高手帮我讲解一下。
{
SetPos sps = new SetPos(SetTextMessage);
this.Invoke(sps, new object[] {pos});
}
else
{
this.lshowNum.Text = pos.ToString() + "/100";
this.progressBar1.Value = Convert.ToInt32(pos);
}
比如上面这段代码,我的理解是:属性InvokeRequired就是表示当前form的空间是否可以被当前线程所访问,如果是就直接访问,不过不是就用委托访问,可上面的代码为什么正好和我的理解相反呢,上面的好像是这样:如果InvokeRequired为true就用委托访问,如果InvokeRequired为false就直接访问。请高手帮我讲解一下。
invokerequired的意思获取是不是需要委托调用,如果为真,就需要,为假就不需要直接访问就行
而是由主线程创建的 所以你的赋值不会成功为了给控件赋值 你需要通过代理 这就是你的控件的InvokeRequired为True了
this.InvokeRequired:并不是任何时候都指代的form,而是你的UI部分的控件,调用的控件