2011-06-28 48 views
2

什么是期间在asp.net一个漫长的过程将消息发送到用户的最佳方式。在其他语言有一个刷新方法,我看到,asp.net也有,但这是最好的方式?如果不是,你还能怎么做?asp.net输出信息到用户的长期运行的任务

+0

不过,虽然在asp.net使用线程,我们不能在功能使用基于会话信息,从线程调用。 – 2013-05-15 14:20:57

回答

2

做到这一点的最好办法是产卵一个单独的线程执行长时间运行的进程,然后有一个从长期运行的线程请求的状态,并显示适当的状态在主线程中调用Ajax。

,说明这一点在深入比较好的文章可以在这里找到:http://www.devarchive.net/displaying_progress_bar_for_long_running_processes.aspx

+0

在WAWS,使用Azure的WebJobs,这是更简单,更可靠。工作者角色更加健壮。 – RickAndMSFT

0

要么使用推送通知架构(彗星)http://pokein.codeplex.com/或您的状态保存到数据库和网页或者刷新,以获取状态或使用jQuery.ajax()来取回数据或刷新UpdatePanel上的定时器,例如:http://msdn.microsoft.com/en-us/library/cc295400.aspx

无论哪种方式 - 您的'进度'需要保存到当前会话或数据库读。 UI通常不会直接与处理线程交互,但都会与包含更新状态的某个中间媒体交谈。

0

正如亚当Tuliper说 - 你需要一个推送通知的框架,而最好的选择是SignalR从微软。无需在任何地方存储状态,或实施轮询。 SignalR会将所需的所有内容都推送回浏览器,而启动进程的请求(在不同的线程上)通过HubContext类将其消息直接发送到客户端。详情可以在here找到。