c#多个线程同时操作一个全局变量,将结果显示到不同的文本框,用加什么控制么?

 我来答
whm412
2013-03-19 · TA获得超过515个赞
知道小有建树答主
回答量:289
采纳率:66%
帮助的人:277万
展开全部
不是很理解你的意思,简单按我的理解给你一个回答吧。
全局变量是引用类型么?如果引用类型就需要加锁,防止并发访问。
方法:定义一个空对象,用来加锁对象
private static object _syncObject=new object();

在需要被访问的全局变量当中加锁
private object _myVariable = new object();
public object MyVariable
{
get
{
lock(_syncObject)
{
return myVariable ;

}
}

}
更多追问追答
追问

 

文本框1和2都实时显示n的值,这样做可以么

追答
这样做是做不到完全的实时显示的,因为是在两个线程当中用来调用控件显示,每次调用前n的值已经被修改。
可采用:

private TestHandler t; //定义局部变量

//在方法内部初始化t

t = delegate
{
this.textBox1.Text = n.ToString();
};
t += delegate
{
this.textBox2.Text = n.ToString();
};
Thread thread3 = new Thread(CC);
thread3.Start();
//添加新方法

private void CC()
{
while (true)
{
n++;

this.Invoke(t);
//加一个延时处理,要不UI线程处理不过来

Thread.Sleep(1000);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式