【发布时间】:2012-01-13 16:40:44
【问题描述】:
目前,我的项目有一个方法
do_quote(quoteid,userid)
此方法需要一两分钟,然后重定向到另一个页面。
这已被重写,现在它在后台运行并重定向到另一个页面,同时 do_quote 所在的线程继续运行。 - 这很好用。
在 default.aspx 页面中的 button_click 事件中:
Dim d as New do_quote_delegate(AddressOf do_quote)
d.BeginInvoke(quoteid,userid, New AsyncCallback(AddressOf Callback),d)
Response.redirect("results.aspx")
涉及到
Delegate Sub do_quote_delegate(Byval quoteid as integer, Byval userid as integer)
Public Sub do_quote(Byval quoteid as integer, Byval userid as integer)
' Do something for several seconds
End Sub
Public Sub Callback(Byval ar As IAsyncResult)
ar.AsyncState.EndInvoke(ar)
' i think i need something here to trigger a notification
End Sub
这基本上就是我想要的,用户可以在网站上继续做事,do_quote方法在后台运行并成功完成其任务。
我想要的是在 do_quote 完成时向浏览器发送通知。理想情况下,我想更改母版页上 div 的文本(但只是返回一个 ALERT javascript msgbox 将是一个开始)。
据我了解,回调是在流程结束时调用的,所以我认为这是将 javascript 发送到浏览器的理想场所,但我想不出我该如何实现这一点。当在进程结束时调用 Callback 方法时,是否有人对我如何向浏览器实现非常基本的通知(msgbox、response.write 等)有任何想法?谢谢
【问题讨论】:
标签: asp.net vb.net multithreading delegates