现在的情况是这样的:
页面1启动一个Thread,这是一个时间较长的循环,循环过程中会向数据库中写进度值。
页面2启动一个Javascript异步访问,读取数据库中进度值显示出来,然后继续异步访问,直到获得进度值为100%。现在的结果是这样的:
单步调试页面1 Thread,过程中确实有写进进度值,比如1%……
Javascript异步访问每次都获得第一个进度值(0%),很久后获得最后一个进度值(100%),中间一直获取到0%这个问题出在哪呢?或者是不是应该用别的方式传递进度值,而不要采用数据库呢?

解决方案 »

  1.   

    循环过程中会向数据库中写进度值?什么意思。你的进度值是一个进度一条记录?还是别的?
    你干嘛要搞2个页面?直接页面1启动thread的时候就显示进度条不行?
      

  2.   

    问题初步解决,原来用Stopwatch控制至少间隔1秒才向数据库写进度值。去掉Stopwatch相关代码就正常了。具体原因暂时没有深究。不过新问题又出现了。新问题:
    页面2就是一个进度查看器(或者叫任务查看器)
    当页面1启动多个Thread,在页面2可以看到多个进度条,这时出现 ICallbackEventHandler 并发。但是结果只有一个进度条正常运行,其余的进度条被意外停止(Thread没停,进度条显示停止了)。似乎 ICallbackEventHandler 并发有 BUG。