服务端程序建议使用计划管理,不要使用窗口计时器。
服务处理是即时的,没有办法等待计时器结束。应该在前端使用js计时器,定时查询服务端的状态。差不多这样吧
HttpRequest事件代码:
Select Case e.Path
Case "启动计算.htm"
'开启计时器启动计算
e.WriteString(“已启动计算”) '生成网页
Case "查询结果.htm"
If bjcgbz=1 And bjlcjlbz = 2 '这两个参数是计算完成后的标志值。
Dim wb As New weui
With wb.AddTable("","Table1")
.CreateFromDataTable(DataTables("产品报 价表"),True,"材料规格 is not null or 金额>0","","类别","材料名称","材料规格","单位","数量","单价_元","金额" )
End With
e.WriteString(wb.Build) '生成网页
else
e.WriteString(“计算未结束”) '生成网页
End If
End Select
即使这样仍然是有问题的,因为计时器也好,计划管理也好,其实都是处于主线程的,如果计算费时仍然是会卡住主线程。比较合理的可以在计时器或者计划管理里调用异步函数进行计算。或者干脆再开一个程序进行计算