我正在尝试从静态类中读取静态属性,该静态类正在从不同的线程中进行修改。
基本上我有这个静态类:
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。
我意识到这可能是同步线程的问题 - 但我似乎无法找到实现这一目标的最简单方法。请帮忙;)
答案 0 :(得分:1)
第一步是将静态值声明为volatile。