读取在不同线程中操作的值

时间:2010-04-15 09:56:02

标签: c# asp.net multithreading synchronization

我正在尝试从静态类中读取静态属性,该静态类正在从不同的线程中进行修改。

基本上我有这个静态类:

public static class Progress{
     public static int currentProgress{get; set;}
}

这个线程操纵currentProgress:

private void Job(){
    for(int i = 0; i<100; i++){
         Progress.currentProgress = i;
         Thread.Sleep(1000);
    }
}

当它正在运行时,我有一个HttpHandler尝试访问此进度(每隔几秒),如下所示:

public void ProcessRequest(HttpContext context) {
    context.Response.Write(Progress.currentProgress.toString());
    context.Response.End();
}

但是currentProgress在这里设置为初始值,而workThread正在工作,只有在完成后才更新currentProgress。

我意识到这可能是同步线程的问题 - 但我似乎无法找到实现这一目标的最简单方法。请帮忙;)

1 个答案:

答案 0 :(得分:1)

第一步是将静态值声明为volatile。