2011-09-02 44 views
0

我正在开发一个Web部件,它必须解析服务器端的文件列表并输出报告。问题在于这种操作可能会持续很长时间。分享点web部分,服务器上的异步处理

我决定在单独的线程中处理文件,并在解析结果时立即加载Web部件内容,例如“Loading ....” Web部件的内容将被更新。

我发现很多帖子用以下解决方案

问题是,我不有我解决.aspx文件,我可以在其中调整@Page指令中的Async="true"参数。

有没有人知道这个文件在哪里,或者它如何被添加到Web部件正确处理的位置。

P.S.我试图用BackgroundWorker执行该任务,但它与Page.RegisterAsyncTask上升的错误相同。错误是:“在此上下文中不允许异步操作,启动异步操作的页面必须将Async属性设置为true,并且只能在PreRenderComplete事件之前的页面上启动异步操作。”

回答

0

WebParts可以运行异步/多线程。通过Page.RegisterAsyncTask注册适当的事件处理程序。您将指定应该异步调用的方法,以及一旦处理完成后控件将返回的回调方法。

http://daniellarson.wordpress.com/2006/06/26/asynchronous-webparts-in-asp-net-2-0/

http://daniellarson.wordpress.com/2006/07/16/asynchrounous-asp-net-webparts-for-sharepointmoss/

+0

我看了这个帖子,但问题仍然。阅读我的问题中有关出现错误的部分。该页面告诉我,异步模式不正确。 此外,“异步页面未启用SharePoint 2007,这是您需要在SiteTemplates aspx页面中编辑或在web.config中全局更改的设置。” SiteTemplates位于何处?我的解决方案不包含web.config。 在帖子中,您可以看到“代码也会同步或异步执行,具体取决于页面的异步值”我***无法实现此目标*(设置页面的异步值)... – Demoony

+0

只是说明:异步并不总是意味着多线程 – Pierreten

+0

Pierreten:我同意你的看法。多线程是完美的,但如果不可能,只是异步就足够了。 任何解决方案????????? – Demoony