c#多个线程同时操作一个全局变量,将结果显示到不同的文本框,用加什么控制么?
1个回答
展开全部
不是很理解你的意思,简单按我的理解给你一个回答吧。
全局变量是引用类型么?如果引用类型就需要加锁,防止并发访问。
方法:定义一个空对象,用来加锁对象
private static object _syncObject=new object();
在需要被访问的全局变量当中加锁
private object _myVariable = new object();
public object MyVariable
{
get
{
lock(_syncObject)
{
return myVariable ;
}
}
}
全局变量是引用类型么?如果引用类型就需要加锁,防止并发访问。
方法:定义一个空对象,用来加锁对象
private static object _syncObject=new object();
在需要被访问的全局变量当中加锁
private object _myVariable = new object();
public object MyVariable
{
get
{
lock(_syncObject)
{
return myVariable ;
}
}
}
更多追问追答
追答
这样做是做不到完全的实时显示的,因为是在两个线程当中用来调用控件显示,每次调用前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);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询