【发布时间】:2011-07-28 09:03:41
【问题描述】:
我有这样的情况。
- TestClass - UI 层中定义的类
- test - 类级变量
- 提交按钮调用一个函数DoSomeThing()..它在业务层执行一些操作不断更新类的状态属性
- Timercontrol 获取状态(来自同一变量测试)以显示在 UI 中
提交按钮由一个线程(比如线程 1)运行并开始操作。是这个线程从 BL 更新状态属性
Timer 控件每次都会创建一个新线程来运行 TimerEvent(比如线程 2、3 等)。
这里的问题是 test.Status 由 thread1 更新的属性不可被其他线程访问。它始终为 null ,即使该属性已由线程 1 更新..
解决办法是什么? 提前致谢
public class TestClass //---->#1
{
private test = new Test() ; //---->#2
protected void SubmitButon_Click(object sender, EventArgs e)
{
// This is performed by Thread1
test.DoSomeThing() //------>#3
}
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
// Timer controls sends out a new thread each time
Label1.Text = test.Status; //------>#4
}
}
【问题讨论】:
-
使状态属性静态(Test.Status)实际上达到了目的..但我想知道为什么它不适用于实例变量..
标签: c# .net asp.net multithreading timer