【发布时间】:2015-09-01 16:03:20
【问题描述】:
目前我正在开展一个项目,其中网页将通过使用网络服务启动 3 小时的数据传输过程。基本上,ID 列表用于告诉 Web 服务将数据对象从一个数据库传输到另一个数据库。
当我开始这个过程时,我想让用户保持控制。他必须能够看到当前进程有多远,并且能够按下取消按钮来停止数据传输。所有这些都是从 ASPX 网页运行的。
我发现尝试异步运行进程并不能像我希望的那样更新用户界面。只有当整个过程完成时 我可能面临的另一个问题是,由于该过程需要很长时间,服务器对象可能会在某个时候刷新,这可能会导致我失去进度。
我目前正在决定是否使用网络服务器来处理数据传输。如果我是,我当前的解决方案是使用任务异步运行进程,并使用客户端 Web 调用(到 aspx 页面)来更新客户端界面。我还在为我的工作对象实现 IRegisteredObject 接口。 IRegisteredObject explanation
欢迎任何关于如何最好地解决这个问题的想法。我真的很想知道我是否朝着正确的方向前进。
【问题讨论】:
-
不,您不会在 ASP.NET 中执行长时间运行的后台任务,原因是您找到的以及许多其他原因。您使用类似于 Windows 服务的东西,例如用于 IPC 的 WCF 来报告进度或取消操作。 stackoverflow.com/questions/28109449/…,