我们用来实现类似事情的过程稍微复杂一点,但它确实有效。
我们创建了一个web服务,它有很多方法,例如;
[SoapDocumentMethod(OneWay = true), WebMethod]
public void StartUpdate(string reference)
[WebMethod]
public ProcessStatus GetProcessStatus(string reference)
对asynch webmethod的调用将启动进程运行并传递参考编号以标识自身。这又调用的存储过程,其使用上的光标的迭代的更新来更新与“参考”,“计数”和“状态”的另一个表
的GetProcessStatus将随后通过在该参考文献并传回当前计数和状态。如果状态已完成,我们可以继续,或者,您可以使用此处的“计数”来更新状态。这方面的一个例子;
protected void Page_Load(object sender, EventArgs e)
{
this.JavaScript.Text = string.Format("<script>setTimeout(\"{0}\", {1});</script>",
this.Page.GetPostBackClientEvent(this.btnRefresh, ""), 3000);
ProcessStatus status= Class.GetProcessStatus(reference);
lblCount.Text = status.Count.ToString();
if (import.Status == (int)ProcessStatus.Status.Complete)
{
Globals.GoUrl("/Import/File/Map.aspx");
}
}
希望有帮助。
当进展的一个步骤发生时,它是否被推送到asp.net?或定时器中的asp.net - 查询值...? –
只需使用计时器在标准asp页面上调用第二种方法,就可以在上面添加更新。 – ChrisBint
如果'StartUpdate'正在使用事务进行更新,'GetProcessStatus'将根本无法查询第二个表。 – wqw