9 个解决方案
#1
1。可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false
2。使用Invoke。比如:
private void SetText(string text)
{
// InvokeRequired需要比较调用线程ID和创建线程ID
// 如果它们不相同则返回true
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
VB语法不清楚了。
2。使用Invoke。比如:
private void SetText(string text)
{
// InvokeRequired需要比较调用线程ID和创建线程ID
// 如果它们不相同则返回true
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
VB语法不清楚了。
#2
'测试方法
Public Sub TestThread()
'创建一个线程
Dim th As New Thread(AddressOf MyThreadProc)
'启动线程
th.Start()
End Sub
Public Sub MyThreadProc()
'更新ui资源例子
Me.Invoke(New VoidDelegate(AddressOf UpdateText))
End Sub
'定义委托
Public Delegate Sub VoidDelegate()
'定义方法
Public Sub UpdateText()
'实际更新界面
Me.Text = "Modified by thread"
End Sub
#3
Me.invoke一下搞定!
sub test
if me.invokerequierd=true then
me.invoke(new methodinvoker(adressof test))
else
label1="Invoke Done!"
'你随便赋值啦
endif
end sub
sub test
if me.invokerequierd=true then
me.invoke(new methodinvoker(adressof test))
else
label1="Invoke Done!"
'你随便赋值啦
endif
end sub
#4
需要赋值的时候调用test就可以了
#5
过程 UpdateText() 不能够带参数?
#6
1.Control.CheckForIllegalCrossThreadCalls =False
2.委托、Invoke
2.委托、Invoke
#7
Invoke
#8
第一种方法除非十分小的程序,十分不推荐
#9
sometimes,i feel the program what is a amazing
Especially this one:
me.invoke(new methodinvoker(adressof test))
Especially this one:
me.invoke(new methodinvoker(adressof test))
#1
1。可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false
2。使用Invoke。比如:
private void SetText(string text)
{
// InvokeRequired需要比较调用线程ID和创建线程ID
// 如果它们不相同则返回true
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
VB语法不清楚了。
2。使用Invoke。比如:
private void SetText(string text)
{
// InvokeRequired需要比较调用线程ID和创建线程ID
// 如果它们不相同则返回true
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
VB语法不清楚了。
#2
'测试方法
Public Sub TestThread()
'创建一个线程
Dim th As New Thread(AddressOf MyThreadProc)
'启动线程
th.Start()
End Sub
Public Sub MyThreadProc()
'更新ui资源例子
Me.Invoke(New VoidDelegate(AddressOf UpdateText))
End Sub
'定义委托
Public Delegate Sub VoidDelegate()
'定义方法
Public Sub UpdateText()
'实际更新界面
Me.Text = "Modified by thread"
End Sub
#3
Me.invoke一下搞定!
sub test
if me.invokerequierd=true then
me.invoke(new methodinvoker(adressof test))
else
label1="Invoke Done!"
'你随便赋值啦
endif
end sub
sub test
if me.invokerequierd=true then
me.invoke(new methodinvoker(adressof test))
else
label1="Invoke Done!"
'你随便赋值啦
endif
end sub
#4
需要赋值的时候调用test就可以了
#5
过程 UpdateText() 不能够带参数?
#6
1.Control.CheckForIllegalCrossThreadCalls =False
2.委托、Invoke
2.委托、Invoke
#7
Invoke
#8
第一种方法除非十分小的程序,十分不推荐
#9
sometimes,i feel the program what is a amazing
Especially this one:
me.invoke(new methodinvoker(adressof test))
Especially this one:
me.invoke(new methodinvoker(adressof test))