【发布时间】:2010-12-16 10:46:34
【问题描述】:
我正在使用一个相当大的 .net Web 应用程序。
用户希望能够将报告导出为 PDF。由于报告基于多层数据的聚合,因此获得准确快照的最佳方法是实际拍摄 UI 快照。我可以获取 UI 的 html 并将其解析为 PDF 文件。
由于 UI 可能需要长达 30 秒的时间来加载,但结果永远不会改变,所以我想在项目保存到后台线程后立即缓存一个 pdf。
我对这种方法的主要担心是,如果我通过 UI,我必须担心超时。虽然后台线程等可以持续多久,但 aspx 页面只能持续很长时间,直到它们被终止。
我有两个想法来解决这个问题。第一个想法是创建一个加载 UI、覆盖渲染并将渲染数据存储到数据库的 aspx 页面。后台线程会在内部向该页面发出 WebRequest,然后从数据库中获取结果。这显然必须考虑安全性,并且如果 UI 生成时间过长,还需要担心超时。
另一个想法是创建一个页面对象并在代码中手动填充它,手动调用相关方法,然后从中获取数据。该方法的问题,除了不知道怎么做之外,我担心我可能会忘记调用一个方法,或者某些东西可能无法正常工作,因为它实际上并没有与真正的会话或网络服务器相关联。
在后台线程中模拟页面 UI 的最佳方式是什么?
【问题讨论】:
-
@RickNZ:由于需要付出的努力,它不在我的列表顶部,但是如果您能想出一种方法来解决 webrequest 会导致的超时问题和创建页面的周期问题在后台线程中会导致,我全神贯注。
标签: c# .net multithreading asp.net