代码之家  ›  专栏  ›  技术社区  ›  Dynde

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

  •  0
  • Dynde  · 技术社区  · 16 年前

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

    这个线程处理当前进程:

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

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

    但是,当工作线程工作时,currentProgress在这里设置为其初始值,并且只有在完成后,currentProgress才会更新。

    我意识到这可能是一个同步线程的问题,但我似乎找不到最简单的方法来实现这一点。请帮忙;)

    1 回复  |  直到 16 年前
        1
  •  1
  •   ChrisBD    16 年前

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