方法1 托管来实现
public delegate void SetTextHandler(string text)
private void SetText(string text)
{
if(textBox4.InvokeRequired==true)
{
SetTextHandler set=new SetTextHandler(SetText)//委托的方法参数应和SetText一致
textBox4.Invoke(set,new object[]{text})//此方法第二参数用于传入方法,代替形参text
}
else
{
textBox4.Text=text
}
}
方法2 在页面加这一句
CheckForIllegalCrossThreadCalls = false
用委托,具体代码如下~:public delegate void MyInvoke(string str)
private void button9_Click(object sender, EventArgs e)
{
//_myInvoke = new MyInvoke(SetText)
//CheckForIllegalCrossThreadCalls = false
Thread t = new Thread(new ThreadStart(fun))
t.Start()
}
private void fun()
{
//_myInvoke("dddd")
SetText("ddd")
}
private void SetText(string s)
{
if (textBox6.InvokeRequired)
{
MyInvoke _myInvoke = new MyInvoke(SetText)
this.Invoke(_myInvoke, new object[] { s })
}
else
{
this.textBox6.Text = s
}
}
this.thread.Abort()将线程加到关闭队列中this.thread.Join()等待线程关闭
如果你的对象是在线程里创建的,应该会自动释放,如果是全局的,应该自己手动释放。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)