c# 跨线程访问控件问题
现在我有两个窗口,loading和helperloading会在新建的线程1里打开helper。我想要用loading的线程2来改变helper里stringabc的值,...
现在我有两个窗口,loading 和 helper
loading会在新建的线程1里打开helper。
我想要用loading 的线程2来改变helper里string abc的值,请问如何来操作?能做个例子吗?
有点没搞明白具体该怎样使用,帮忙调下吧
private void V2TP3()
{ThirdStr = new App_Code.V2T_Chat().V2TChatString();
V2TP3LoadingLabel.Text = "Complete!";
V2TP3LoadingLabel.ForeColor = Color.Yellow;}
这个是我线程1的调用
Th[3] = new Thread(new ThreadStart(V2TP3));
private void V2TSys()
{V2TSysLoadingLabel.Text = "Complete!";
V2TSysLoadingLabel.ForeColor = Color.Yellow;
Hp.ShowDialog();}
这个是我线程2的调用Hp窗口。窗口播放一个flash
现在想要在第1线程里更改第2线程里Hp窗口的flash帧的播放。就是当全部第1线程加载完毕之后,开始更改Hp中的flash帧为61。 展开
loading会在新建的线程1里打开helper。
我想要用loading 的线程2来改变helper里string abc的值,请问如何来操作?能做个例子吗?
有点没搞明白具体该怎样使用,帮忙调下吧
private void V2TP3()
{ThirdStr = new App_Code.V2T_Chat().V2TChatString();
V2TP3LoadingLabel.Text = "Complete!";
V2TP3LoadingLabel.ForeColor = Color.Yellow;}
这个是我线程1的调用
Th[3] = new Thread(new ThreadStart(V2TP3));
private void V2TSys()
{V2TSysLoadingLabel.Text = "Complete!";
V2TSysLoadingLabel.ForeColor = Color.Yellow;
Hp.ShowDialog();}
这个是我线程2的调用Hp窗口。窗口播放一个flash
现在想要在第1线程里更改第2线程里Hp窗口的flash帧的播放。就是当全部第1线程加载完毕之后,开始更改Hp中的flash帧为61。 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
用委托,具体代码如下~:
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;
}
}
希望能解决您的问题。
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;
}
}
希望能解决您的问题。
追问
我知道用委托,麻烦您用我的控件帮我改下吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询