从网页开始,我开始一项耗时的工作,并使用 webmethod 在 UI 上更新它的状态。
工作在一个线程中完成:
ThreadPool.QueueUserWorkItem(new WaitCallback(DoJob), parameters);
使用静态属性设置作业的状态,当网页使用 javascript 调用 web 方法时,它会读取这些属性。
[System.Web.Services.WebMethod]
public static ProcessStatus GetProgressStatus()
{
Jober.Lock.EnterReadLock();
ProcessStatus st = new ProcessStatus(Jober.PercentageCompleted, Jober.TotalNumber);
Jober.Lock.ExitReadLock();
return st;
}
UI进度是通过javascript更新的,问题是线程完成后我需要在服务器端更新UI,所以javascript在这里帮不了我。
线程完成时发出信号的最佳方式是什么?